ffmpeg使用
有些选项在每个流中都必须指定,例如比特率bitrate或编解码codec。指定流的字符串一般都会有各参数名称和参数,如编解码"-codec:a:1 ac3"表明第二个流为音频流,使用ac3编码。有的选项可匹配多个流,如"-b:a 128k"指定音频比特率bitrate为128k。空的流选项适用于所有的流,如"-codec copy" 或"-codec: copy"将复制所有流且无需重新编码。流选项的形式可能为stream_index,如"-threads:1 4"将设置线程数为4的流为第二个流。stream_type[:stream_index],type的选项:'v'表示视频,'a'表示音频,'s'表示字幕,'d'表示数据,'t'为附件。p:program_id[:stream_index] ,如果给出stream_index,然后用ID 为program_id 的程序匹配流stream_index,否则匹配所有流。
从文件生成直播流:ffmpeg -i mv.mp4 -f flv udp://localhost:1234
示例:将输出视频比特率设为64kbit/s
ffmpeg -i input.avi -b 64k output.avi
示例:将输出视频帧率强制设置为24fps
ffmpeg -i input.avi -r 24 output.avi
ffmpeg 模拟udp流
ffmpeg -re -i /var/www/10.flv -vcodec mpeg4 -f mpegts udp://localhost:1234
接收流
ffmpeg -y -i udp://localhost:1234 v.yuv (-f rawvideo -pix_fmt uyvy422)
参数:
-i --- 输入,可以为文件或流地址
-f ---视频格式
-version ---版本号-L -h
-formats 显示所有可用的格式,D为解码,E为编码
-codecs ---显示可用的编解码,V:video,A:audio,S:subtitle codec
-bsfs ---显示可用的比特流过滤器bitstream filters
-protocols ---显示支持的协议
-pix_fmts ---显示可用的像素格式pixel formats
-sample_fmts ---显示可用的样本格式
-loglevel | -v loglevel ---设置log级别:quiet、panic、fatal、error、warning、info、verbose、debug,默认为stderr
-f fmt ---强制转换格式
-y ---如输出文件已存在则覆盖原有文件
-t ---时长,传输/捕获视频的时长,以秒为单位,也支持"hh:mm:ss[.xxx]"
-fs ---设置文件大小限制file size
-ss ---位置,查找给定的时间点,以秒为单位,也支持"hh:mm:ss[.xxx]"
-itsoffset ---偏移量,设置输入时间的偏移量,以秒为单位,也支持"hh:mm:ss[.xxx]"
-timestamp time,时间戳,格式:now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z]),加z表示使用本地时间。
-metadata key=value,设置属性,如设置输出文件的title:ffmpeg -i in.avi -metadata title="my title" out.flv
-v number,设置日志verbosity级别
-target type,目标文件的type:("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ... ),如:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg || ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
-dframes number,
-scodec codec,强制对subtitle进行编码
-newsubtitle ,添加新的subtitle
-slang code,Set the ISO 639 language code (3 letters) of the current subtitle
stream.
视频选项
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频缺省25
-s size 设置帧大小格式为WXH 缺省160X128.下面的简写也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 352X288 4cif 704X576 16cif 1408x1152 qqvga 160x120 qvga 320x240 vag 640x480 svga 800x600 xga 1024x768 uxga 1600x1200 qxga2048x1536
-aspect aspect 设置横纵比4:3 16:9 或1.3333 1.7777
-croptop size 设置顶部切除带大小像素单位
-cropbottom size -cropleft size -cropright size
-padtop size 设置顶部补齐的大小像素单位
-padbottom size -padleft size -padright size -padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如000000代表黑色)
-vn 不做视频记录disable video recording
-bt tolerance 设置视频码率容忍度kbit/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR)same quantizer
-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-passlogfile file 选择两遍的纪录文件名为file
-newvideo ,添加新的视频流到当前输出流
高级视频选项
-pix_fmt format,使用‘list’查看可用像素格式项
-g gop_size 设置图像组大小
-intra 仅适用帧内编码
-qscale q 使用固定的视频量化标度(VBR)
-qmin q 最小视频量化标度(VBR)
-qmax q 最大视频量化标度(VBR)
-qdiff q 量化标度间最大偏差(VBR)
-qblur blur 视频量化标度柔化(VBR)
-qcomp compression 视频量化标度压缩(VBR)
-rc_init_cplx complexity 一遍编码的初始复杂度
-b_qfactor factor 在p和b帧间的qp因子
-i_qfactor factor 在p和i帧间的qp因子
-b_qoffset offset 在p和b帧间的qp偏差
-i_qoffset offset 在p和i帧间的qp偏差
-rc_eq equation 设置码率控制方程默认tex^qComp
-rc_override override 特定间隔下的速率控制重载
-me method 设置运动估计的方法可用方法有zero phods log x1 epzs(缺省) full
-dct_algo algo 设置dct的算法可用的有0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5
FF_DCT_ALTIVEC
-idct_algo algo 设置idct算法。可用的有0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4
FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-mbd mode 宏块决策0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4个运动矢量仅用于mpeg4
-part 使用数据划分仅用于mpeg4
-bug param 绕过没有被自动监测到编码器的问题
-strict strictness 跟标准的严格性
-aic 使能高级帧内编码h263+
-umv 使能无限运动矢量h263+
-deinterlace 不采用交织方法
-interlace 强迫交织法编码仅对mpeg2和mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是
不交织,但是损失更大
-psnr 计算压缩帧的psnr
-vstats 输出视频编码统计到vstats_hhmmss.log
-vhook module 插入视频处理模块module 包括了模块名和参数,用空格分开
音频选项
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码
音频/视频捕获选项
-vd device 设置视频捕获设备。比如/dev/video0
-vc channel 设置视频捕获通道DV1394专用
-tvstd standard 设置电视标准NTSC PAL(SECAM)
-dv1394 设置DV1394捕获
-av device 设置音频设备比如/dev/dsp
高级选项
-map file:stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法用于编解码测试
-ps size 设置包大小,以bits为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流。只工作于图像流,用于ffserver测试
-title string 设置标题
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-hq 激活高质量设置