ffmpeg 文档阅读笔记
作者:互联网
1.ffmpeg简介
1.1.命令格式
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
-i:指定输入。输入可以是视频文件、网络流、音视频设备等。可以使用-i指定任意数量的输入。
输出:命令行上任意不能被解释成选项的东西,都被认为是输出。可以有任意数量的输出。
-map:一条ffmpeg命令中,可能有多个输入和输出。-map指定哪个输入对应哪个输出。如果没有使用-map进行指定,那么会使用默认的方法进行指定
-i后面跟索引,索引值从0开始。2:3代表第三个输入文件的第四个流。【不懂??】
ffmpeg的每个选项按顺序对输入进行操作,即选项对输入进行操作的结果,送给下一个选项进行操作,故ffmpeg的选项的顺序很重要。全局选项(例如 verbosity level)是个例外,全局选项的位置不重要,但是一般放在最前面。
选项都只应用于最先遇到的文件。
1.2.ffmpeg的处理流程
_______ ______________
| | | |
| input | demuxer | encoded data | decoder
| file | ---------> | packets | -----+
|_______| |______________| |
v
_________
| |
| decoded |
| frames |
|_________|
________ ______________ |
| | | | |
| output | <-------- | encoded data | <----+
| file | muxer | packets | encoder
|________| |______________|
使用libavformat库读取输入文件,获取到encoded data packets。When there are multiple input files, ffmpeg tries to keep them synchronized by tracking lowest timestamp on any active input stream.【这句英文看不懂】
decoder产生未压缩的帧((raw video/PCM audio/...),然后可以进行filtering
2.Filtering
使用libavfilter库中的filter对decoder产生未压缩的帧进行处理,多个filter形成一个filter graph。filter分为simple和complex
2.1.Simple filtergraphs
Simple filtergraphs结构如下:
_________ ______________
| | | |
| decoded | | encoded data |
| frames |\ _ | packets |
|_________| \ /||______________|
\ __________ /
simple _\|| | / encoder
filtergraph | filtered |/
| frames |
|__________|
通过-vf和-af分别指定视频和音频的filter
2.2. Complex filtergraphs
Complex filtergraphs结构如下
_________
| |
| input 0 |\ __________
|_________| \ | |
\ _________ /| output 0 |
\ | | / |__________|
_________ \| complex | /
| | | |/
| input 1 |---->| filter |\
|_________| | | \ __________
/| graph | \ | |
/ | | \| output 1 |
_________ / |_________| |__________|
| | /
| input 2 |/
|_________|
通过-lavfi指定Complex filtergraphs,-lavfi是一个全局选项
标签:选项,__________,ffmpeg,_________,filter,文档,笔记,input 来源: https://www.cnblogs.com/codingbigdog/p/16344239.html