ffmpeg是一个开源的音视频转码工具,它提供了录制、转换以及流化音视频的完整解决方案,可以转码、压制、提取、截取、合并、录屏等。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

一、下载FFmpeg

打开官网地址,进入下载页:

选择Linux版本,点击Linux Static Builds下方选项,打开稳定版的下载详情页面。

在列表中选择适合自己的版本,这里我直接选择最新版 ffmpeg-release-amd64-static.tar.xz - md5,复制下载链接地址,打开终端,使用wget命令下载文件:

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

二、安装FFmpeg

下载完成后,进入文件的下载路径,可以看到下载完成的文件后缀名为.tar.xz,执行解压命令解压文件:

tar -xvf ffmpeg-release-amd64-static.tar.xz

解压完成后进入解压出来的文件夹ffmpeg-release-amd64-static/:
FFmpeg和FFprobe都在这里,执行一下命令查看是否安装成功:

./ffmpeg


至此,FFmpeg则安装成功了,下面可以进行视频、音频等处理了。

三、FFmpeg的常用使用方法

FFmpeg常用的命令行参数如下:

1、常用命令

下面的命令查看FFmpeg支持的视频后缀名格式,也称为容器格式:

$ ffmpeg -formats

下面的命令查看FFmpeg支持的编码格式:

$ ffmpeg -codecs

查看视频文件的元信息,比如编码格式和比特率,可以只使用-i参数:

$ ffmpeg -i input.mp4

例如:

2、转换容器格式

FFmpeg转换容器格式最简单最常用的命令如下:

$ ffmpeg -i input.xxx output.xxx

例如我们有原视频a.mov想要转成mp4格式并更改文件名为b我们可以使用如下命令:

$ ffmpeg -i a.mov b.mp4

mkv解封。
直接复制音频与视频流到mp4中进行重新封装(此方式适用于flv格式,例如B站下下来的),由于不需要重新编码,此代码的转换速度取决于你电脑的硬盘速度。

$ ffmpeg -i a.mkv -vcodec copy -acodec copy b.mp4

3、转换编码格式

FFmpeg转换编码格式的命令如下,转换编码格式(transcoding)指的是, 将视频文件从一种编码转成另一种编码。比如转成 H.264 编码,一般使用编码器libx264,所以只需指定输出文件的视频编码器即可。

$ ffmpeg -i [input.file] -c:v libx264 output.mp4

下面是转换成H.265编码的写法:

$ ffmpeg -i [input.file] -c:v libx265 output.mp4

4、调整视频码率(视频压缩)

调整码率(transrating)指的是,改变编码的比特率,一般用来将视频文件的体积变小。

ffmpeg -i input.mp4 -r 10 -b:a 32k output.mp4 #对它降低fps和音频码率的方法大大压缩文件大小,而清晰度不变。
#或者
ffmpeg -i input.mp4 -vcodec libx264 -crf 22 output.mp4 #将原视频转换成H.264格式并压缩,只压缩码率,其他不变
#再或者
ffmpeg -i input.webm -vcodec libx264 -crf 20 -acodec aac output.mp4 #将YouTube vp9编码转换为h264编码

命令选项介绍

-r 码率
-b:a 音频码率
-vcodec 视频编码
-crf 控制不变码率(量化比例的范围为0 ~ 51,其中0为无损模式,23为缺省值,51可能是最差的,推荐日常使用18-22。)
-acodec 音频编码

5、改变视频分辨率

视频分辨率可以使用-s来指定,视频比例可以使用-aspect来指定,例如:

ffmpeg -i input.mp4 -s 1280x720 -acodec copy output.mp4
ffmpeg -i input.mp4 -aspect 16:9 output.mp4

6、提取(去除)视频中的视频(或音频)

#去除视频中的音频(提取视频)
ffmpeg -i in.mp4 -vcodec copy -an out.mp4
#去除视频中的视频(提取音频)
ffmpeg -i in.mp4 -acodec copy -vn out.mp4

7、添加音轨

添加音轨(muxing)指的是,将外部音频加入视频,比如添加背景音乐或旁白。

$ ffmpeg -i input.aac -i input.mp4 output.mp4

8、旋转视频

将视频按照弧度制进行旋转,使用-vf rotate=参数,例如:

#将视频旋转90度
ffmpeg -i in.mp4 -vf rotate=PI/2 out.mp4

9、视频(音频)变速

视频变速使用-filter:v setpts=参数,音频变速使用-filter:a atempo=参数,例如:

#将视频调整为0.5倍速
ffmpeg -i in.mp4 -filter:v setpts=0.5*PTS out.mp4#音频变速为原先的两倍
ffmpeg -i in.mp3 -filter:a atempo=2.0 out.mp3

10、从视频中截取图像*

从视频中提取图片的命令如下:

ffmpeg -i in.mp4 -r 1 -q:v 2 -f image2 imagename-%d.jpeg

命令选项介绍:

-r:每秒提取的帧数,如上面为每秒1帧,即一张图像
-q:v :图片质量,一般是1到5之间(1 为质量最高)
-f:图片格式,上述为image2
image-%d.jpeg:生成图像的文件名,可以加上完整路径,%d会使文件名按整数编号,如上述生成图像为image-1.jpeg, image-2.jpeg, ...
-t:持续时间,如-t 4表示持续4s
-ss:起始时间,如-ss 01:30:14,从01:30:14开始
-vframes:指定抽取的帧数,如-vframes 120,指定抽取120张
-s:格式大小,如-s 640x360
-y:覆盖,直接使用

11、视频裁剪

裁剪(cutting)指的是,截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)

$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]

上面例子中,-c copy表示不改变音频和视频的编码格式,直接拷贝,这样会快很多。

三、总结

FFmpeg是一个非常厉害的格式转化与压制的软件,虽然没有GUI,但是只要掌握了几个基本的命令就足以完成绝大多数人的使用需求,Windows、macOS、Linux全平台试用。而且由于FFmpeg是一个开源软件,所以你可以根据你的个性化需求对该软件进行定制。同样如果你有更多的使用需求可以去查阅FFmpeg的官方文档选择你所需要的参数。

四、参考链接

https://www.ruanyifeng.com/blog/2020/01/ffmpeg.html
https://www.zl-asica.com/2020/ffmpeg/
https://www.cnblogs.com/jisongxie/p/9948845.html
https://www.cnblogs.com/wanghetao/p/3420788.html
https://www.cnblogs.com/wanghetao/p/3420788.html
https://www.jianshu.com/p/2b609afb9800
https://blog.csdn.net/yang725614/article/details/79696756

FFmpeg视频处理入门教程----从安装到使用(Linux版)相关推荐

  1. FFmpeg 视频处理入门教程(转)

    FFmpeg 视频处理入门教程(阮一峰) FFmpeg 是视频处理最常用的开源软件. 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式 ...

  2. FFmpeg视频处理入门教程(新手必看)

    本文主要介绍了FFmpeg视频处理入门教程,它功能强大,用途广泛,是许多音频和视频格式的标准编码/解码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 FFmpeg 是视频处理最常用的开源软件. ...

  3. Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...

    Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖 Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开源 WAF ,但是它 ...

  4. mysql 开源入门_入门教程:安装配置新版MySQL 8开源数据库

    原标题:入门教程:安装配置新版MySQL 8开源数据库 [ 来自IT168] [IT168 技术]MySQL是现代应用程序编程堆栈中常见的数据库管理系统.如果您想要一个适用于您应用程序的,便于利用丰富 ...

  5. RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)

    RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列 ...

  6. BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们

    BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们 Maker的中文含义类似"创客".创客是指一群酷爱科技.热衷实践的人群,他们以分享技术.交流思想 ...

  7. linux terminal教程,Linux入门教程 - 如何记录和重放Linux终端会话

    原标题:Linux入门教程 - 如何记录和重放Linux终端会话 来自:https://www.linuxmi.com/replay-linux.html 使用命令,我们可以在type文件中记录终端会 ...

  8. MyCat笔记(二):MyCat 安装 简单使用(Linux版)

    MyCat 官网:http://www.mycat.io/ 1.准备工作 1.MyCat版本:1.6.x      点击下载 2.数据库(MySQL为例,支持主从复制 )      主从复制教程:My ...

  9. 如何安装xampp(linux版)

    如何安装xampp(linux版) 1 安装 首先,打开xampp官网,找到linux版的软件安装包,点击下载,这里下载的是xampp-linux-x64-8.1.6-0-installer.run ...

最新文章

  1. PAXOS/RAFT理解
  2. sql array 数组基本用法(三)
  3. node.js实现图片上传(包含缩略图)
  4. android 解决华为 SlidingMenu出现白屏
  5. 创新小组 实战Git团队企操作手册_精华版本
  6. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
  7. Java基础-环境变量设置及Java命令行使用
  8. 我的docker随笔34:gitlab服务部署
  9. Linux 市场估值将超 70 亿美元,主要原因是安全与开源需求
  10. CentOS RabbitMQ安装
  11. java代码操作注册表,java操作注册表范例代码
  12. [FFmpeg] Ubuntu 16.04 安装 FFmpeg
  13. oralce杀session
  14. Windows 之间用rsync同步数据(cwRsyncServer配置)
  15. mysql number 类型_mysql number类型
  16. ESP32C3 CORE+PIO+lvgl显示
  17. 怎么用html把字写到图片上,用HTML代码在图片上写字
  18. IGraphicsContain 删除元素
  19. 算法导论 — 4.4 用递归树方法求解递归式
  20. 文献解读 | 科学家发现代谢调控促进肿瘤转移新机制

热门文章

  1. K分查找时间复杂度推导
  2. 刚开始做微商如何引流 ?一开始做微商没有客源怎么办
  3. vscode配置vue代码模板
  4. java后端研发经典面试题总结二
  5. 鹅肉是凉性还是热性 鹅肉怎么做好吃
  6. 十大超极本:联想U系列上榜
  7. 【数学计算】判断两条线段是否相交+计算两条线段的交点和夹角
  8. DM数据库安装过程--基于NeoKylin操作系统详解
  9. MySQL数据库基础表格——增删改查(下)
  10. 预览文件乱码解决方法记录