目录


前言

实战

一、编码器

二、解码器

三、滤镜

四、封装格式

五、常用命令 

5.1 抽取纯音频文件

5.2 抽取纯视频文件

5.3 合并音频和视频文件

结尾


前言

FFmpeg是一个完整的跨平台音视频解决方案,它可以用于处理音频和视频的转码、录制、流化处理等应用场景。官网:http://ffmpeg.org/。FFmpeg有三大利器,分别是ffmpeg、ffprobe、ffplay。今天主要介绍ffmpeg,它是FFmpeg用于音视频转码,转封装、转推流的基础工具。


实战

一、编码器

使用 ffmpeg -encoders 命令可以查看当前ffmpeg版本支持的编码器都有哪些。如果你正在使用ffmpeg编码,报错了,你可以使用这个命令查看一下当前的编码器是否支持。这里你可能会问,ffmpeg没有统一的版本吗?为什么支持的编码器还不一样?官网正式的ffmpeg版本肯定是统一的,但是实际项目我们不可能使用所有的编码器、解码器、滤镜等组件,一般会进行裁剪,因此你正在使用的版本可能就缺少某些编码器或者解码器,这样解释应该可以理解吧。

执行 ffmpeg -encoders 命令的结果如下所示:

从中可以看出ffmpeg支持的视频编码器中,常见的有flv,h263,mpeg等;音频编码器有pcm,ac3,aac,g722等。 


二、解码器

使用 ffmpeg -decoders 命令可以查看当前ffmpeg版本支持的解码器都有哪些。命令最开始会显示当前ffmpeg版本已经不同组建的版本,其实ffmpeg本身就是一个工具集合,内部包含了不同的功能模块。其中包括libavutil,libavcodec,libavformat,libavdevice,libavfilter,libswscale,libswresample七部分。

执行命令后的结果如下所示:

从中可以看出ffmpeg支持的视频解码器中,常见的有flv,h263,h264,mpeg,vp8,vp9等;音频编码器有pcm,ac3,aac,g722,opus等。是不是感觉ffmpeg支持的解码器要比编码器多?是的,你的感觉没有错。ffmpeg本身更多的用于解码,编码器更多的是先由一些视频厂家或者第三方结构定义出来的不同视频编码标准,然后ffmpeg根据需要是否决定支持对应的解码功能,比如编码h264视频时,更多使用的是openH264或者是x264编码库。

另外需要说明的是,有一个类似等式:ffmpeg -codecs = (ffmpeg -encoders)+ (ffmpeg -decoders) 。意思就是你也可以使用ffmpeg -codecs 命令查看总的编码器和解码器的情况。  


三、滤镜

使用 ffmpeg -filters 命令可以查看当前ffmpeg版本都支持哪些滤镜。

执行命令后的结果如下所示:

过滤器中的类型有时间线支持、线程切片、命令行支持、控制音频输入输出、控制视频输入输出、动态控制输入输出的数量和类型、源滤波器。


四、封装格式

说到封装格式,大家就比较容易理解了,就是我们平时看到的视频文件的后缀,比如mp4,flv,mkv,webm,ts,3gp等等。ffmpeg在编码的时候需要用到支持的封装格式,比如把aac的音频和h264的视频封装成mp4文件;解码的时候需要用到支持的解封装格式,比如把mp4文件解封装成aac的音频和h264的视频。使用 ffmpeg -formats 命令可以查看支持的所有封装格式和解封装格式。

执行命令的结果如下所示:


五、常用命令 

5.1 抽取纯音频文件

这个例子我们演示从视频文件(recorder001.mp4)中抽取出纯音频文件(recorder001.aac),命令:ffmpeg -i recorder001.mp4 -vn -acodec copy recorder001.aac 。注意:recorder001.aac文件是可以直接播放的。

执行过程:

-vn:表示不要视频内容;

-acodec copy:表示完全拷贝音频信息。


5.2 抽取纯视频文件

这个例子我们演示从视频文件(recorder001.mp4)中抽取出纯视频文件(recorder001.h264),命令:ffmpeg -i recorder001.mp4 -an -vcodec copy recorder001.h264 。注意:recorder001.h264文件是不能直接播放的,需要特定的h264裸流播放器。

执行过程:


5.3 合并音频和视频文件

这个例子我们演示把一个视频文件和一个音频文件合并成一个音视频文件,命令:ffmpeg -i 少年.mp3 -i benben.mp4 -acodec copy -vcodec copy recorder003.mp4 。生成的文件在播放过程中就包含了音频文件输入的声音。

执行命令的结果如下所示:


结尾

ffmpeg还有很多其他的用法,这里就不一一说明了,感兴趣的小伙伴,自己动手试试吧。 

最后,附上一个音视频学习交流群的二维码,欢迎入群!也可以邀请其他小伙伴呦!

<strong><span style="font-size: 20px;">前言</span></strong>-LMLPHP



本文分享自微信公众号 - 玩转音视频(gh_5da216074f34)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

05-04 20:35