ffmpeg使用说明书

本文详细介绍了FFmpeg工具的使用,包括流说明符、通用选项、主要选项、视频和音频转码选项等,提供了多个实用例子,如音视频抓取、格式转换,以及在实际项目中的应用,帮助读者掌握FFmpeg进行音视频处理的技巧。
摘要由CSDN通过智能技术生成

       在做音视频的项目当中,常常遇到音视频不同步,编码和解码的出错的等等问题,这时候就需要将对应出问题的视频数据给dump下来进行分析,使用ffmpeg的各种工具能够更好的分析对应的音视频的文件。

ffmpeg

       ffmpeg工具主要用于音视频转码。
使用规则是:

ffmpeg [global_options] {
   [input_file_options] -i input_url} ... {
   [output_file_options] output_url} ...

1.流说明符

stream_index
       表示流的编号,是从0开始的,一般使用的时候都是配合streamType进行使用的。
示例
比如-codec:a :1 ac3,表示指定第二路音频流使用ac3进行编码,不指定stream_index的话,就表示所有的流,-b:a 128k,表示指定所有的音频流都用128k的码率,-codec copy 或者-codec:copy则表示将只是将流复制,并没有重新编码

stream_type

stream_type 说明
‘v’ 或者 ‘V’ 表示视频
‘a’ 表示音频
‘s’ 表示字幕
‘d’ 表示data
‘t’ 表示附加信息

p:program_id[:stream_index] or p:program_id[:stream_type[:stream_index]] or p:program_idⓂ️key[:value]"
第一种情况,匹配指定的stream_index流;
第二种情况,匹配指定的stream_type和指定的stream_index的流;
第三种情况,匹配指定metadata的流

m:key[:value]
跟指定了metadata的key和value的流进行匹配,value没有给出的话,匹配有对应的key的流。

u
跟可用配置的流进行匹配。

2.通用选项

这些选项都在ff*的工具都通用

-L
显示证书

-h,-?,-help,–help [arg]
帮助说明
arg的取值

arg取值 说明
long 打印附加的选项
full 打印全部的选项
decoder=decoder_name 打印指定解码器的参数
encoder=encoder_name 打印指定编码器的参数
demuxer=demuxer_name 打印指定解复用器的参数
muxer=muxer_name 打印指定合成器的参数
filter=filter_name 打印指定滤镜的参数

-version
显示版本

-formats、-demuxers、-muxers、-devices、-codecs、-decoders、-encoders、-bsfs、-protocols、-filters、-pix_fmts、-sample_fmts、-layouts-colors、-sources device[,opt1=val1[,opt2=val2]…]、-sinks device[,opt1=val1[,opt2=val2]…]
上面参数都显示类的,都是显示可用的参数,bsfs是bitstream fitlers

-loglevel [flags+]loglevel | -v [flags+]loglevel

loglevel有如下的值

类型 说明
-8 quiet 不显示任何东西
0 panic 只显示错误信息,和导致错误的信息
8 fatal 显示错误信息
16 error 显示所有的错误信息
24 warning 显示warning信息
32 info 显示info信息
40 verbose 显示verbose信息
48 debug 显示所有信息
56 trace 显示trace信息

-report
将所有的日志给dump下来,文件名字规则为program-YYYYMMDD-HHMMSS.log

-hide_bander
压制打印的banner

-cpuflags flags

3.主要的选项

-f fmt (input/output)
指定输入输出的格式

-i url (input)
输入的文件格式

-y (global)
不在询问的重写输出文件

-n (global)
不重写输出文件

-stream_loop number(input)
设置输入的流是否需要循环,Loop 0表示不loop,loop -l表示无限loop

-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
指定转码的编码器

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT

-map 0表示对所有的视频流都生效,-c:v 表示指定视频流的编码器,-c:a 表示对音频流的只是复制而已。

ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

-t duration (input/output)
表示限制读取的数据的时间长度

-to position (input/output)
表示停止读取源文件的位置

-fs limit_size (output)
显示输出文件的大小

-ss position (input/output)
指定输入或者输出文件的起始位置

-sseof position (input)
指定输入文件的结束位置

-itsoffset offset (input)
设置输入文件的时间偏移

-timestamp date (output)
设置录制的时间戳

-metadata[:metadata_specifier] key=value (output,per-metadata)
添加输入文件的metadata信息

ffmpeg -i in.avi -metadata title="my title" out.flv
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT

-disposition[:stream_specifier] value (output,per-stream)
设置流的配置
下面有流的配置
default
dub
original
comment
lyrics
karaoke
forced
hearing_impaired
visual_impaired
clean_effects
attached_pic
captions
descriptions
dependent
metadata

示例
设置第二路音频流为默认的流

ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv

-program [title=title:][program_num=program_num:]st=stream[:st=stream…] (output)
创建指定的项目

-target type (output)
设置输出的文件类型
vcd, svcd, dvd, dv, dv50等等类型,有可能要使用这些格式前缀pal-, ntsc- or film-
示例

ffmpeg -i myfile.avi -target pal-vcd /tmp/vcd.mpg

-dn (output)
不转码data数据

-dframes number (output)
设置data数据的帧率

-frames[:stream_specifier] framecount (output,per-stream)
设置达到某个帧数,然后停止转码

-q[:stream_specifier] q (output,per-stream)
-qscale[:stream_specifier] q (output,per-stream)
用来解决高质量的转码

-filter[:stream_specifier] filtergraph (output,per-stream)
使用指定的滤镜效果,filtergraph是过滤器图

-filter_script[:stream_specifier] filename (output,per-stream)
和上面的参数一致

-filter_threads nb_threads (global)
定义处理filter的线程数

-pre[:stream_specifier] preset_name (output,per-stream)
设置流的预先配置

-stats (global)
打印转码的状态日志

-progress url (global)
将处理进度打印到文件当中

-stdin
开启标准输入输出

-debug_ts (global) 或者-fdebug ts
打印转码时间戳,用来测试或者debug的

-attach filename (output)
添加一个附属的文件到输出文件中

ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值