FFmpeg视频处理入门教程----从安装到使用(Linux版)
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版)相关推荐
- FFmpeg 视频处理入门教程(转)
FFmpeg 视频处理入门教程(阮一峰) FFmpeg 是视频处理最常用的开源软件. 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式 ...
- FFmpeg视频处理入门教程(新手必看)
本文主要介绍了FFmpeg视频处理入门教程,它功能强大,用途广泛,是许多音频和视频格式的标准编码/解码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 FFmpeg 是视频处理最常用的开源软件. ...
- Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...
Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖 Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开源 WAF ,但是它 ...
- mysql 开源入门_入门教程:安装配置新版MySQL 8开源数据库
原标题:入门教程:安装配置新版MySQL 8开源数据库 [ 来自IT168] [IT168 技术]MySQL是现代应用程序编程堆栈中常见的数据库管理系统.如果您想要一个适用于您应用程序的,便于利用丰富 ...
- RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)
RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列 ...
- BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们
BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们 Maker的中文含义类似"创客".创客是指一群酷爱科技.热衷实践的人群,他们以分享技术.交流思想 ...
- linux terminal教程,Linux入门教程 - 如何记录和重放Linux终端会话
原标题:Linux入门教程 - 如何记录和重放Linux终端会话 来自:https://www.linuxmi.com/replay-linux.html 使用命令,我们可以在type文件中记录终端会 ...
- MyCat笔记(二):MyCat 安装 简单使用(Linux版)
MyCat 官网:http://www.mycat.io/ 1.准备工作 1.MyCat版本:1.6.x 点击下载 2.数据库(MySQL为例,支持主从复制 ) 主从复制教程:My ...
- 如何安装xampp(linux版)
如何安装xampp(linux版) 1 安装 首先,打开xampp官网,找到linux版的软件安装包,点击下载,这里下载的是xampp-linux-x64-8.1.6-0-installer.run ...
最新文章
- PAXOS/RAFT理解
- sql array 数组基本用法(三)
- node.js实现图片上传(包含缩略图)
- android 解决华为 SlidingMenu出现白屏
- 创新小组 实战Git团队企操作手册_精华版本
- WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
- Java基础-环境变量设置及Java命令行使用
- 我的docker随笔34:gitlab服务部署
- Linux 市场估值将超 70 亿美元,主要原因是安全与开源需求
- CentOS RabbitMQ安装
- java代码操作注册表,java操作注册表范例代码
- [FFmpeg] Ubuntu 16.04 安装 FFmpeg
- oralce杀session
- Windows 之间用rsync同步数据(cwRsyncServer配置)
- mysql number 类型_mysql number类型
- ESP32C3 CORE+PIO+lvgl显示
- 怎么用html把字写到图片上,用HTML代码在图片上写字
- IGraphicsContain 删除元素
- 算法导论 — 4.4 用递归树方法求解递归式
- 文献解读 | 科学家发现代谢调控促进肿瘤转移新机制