1.ffmpeg的使用语法
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
通用参数:
-f:设定输出格式
-i:设定输入流
-ss:开始的时间
-bf :B帧数目控制
-g:关键帧间隔控制
-s:分辨率控制
-h:帮助
-fromats:显示可用的格式
-title string:设置标题
-author string:设置作者
-copyright string:设置版权
-comment string:设置评论
音频参数:
-ab:设置音频码率
-an:去掉音频
-ar:设定采样率
-ac:设定声音的Channel数
-acodec:音频选项,设定声音编解码器,若未设定,使用与输入流相同的编解码器
视频参数:
-b:设定视频流量,默认为200kbit/s
-r:设定帧速率,默认为25
-s:设定画面的宽与高
-vn:不处理视频
-aspect:设定画面的比例
-vcodec:视频选项,设定视频编解码器,若未设定,使用与输入流相同的编解码器
-bt tolerance:设置视频码率容忍度kbit/s
-maxrate bitrate:设置最大视频码率容忍度
-minrate bitreate:设置最小视频码率容忍度
-bufsize size:设置码率控制缓冲区大小
-sameq:使用同样视频质量作为源(VBR)
-croptop size:设置顶部切除带大小 像素单位
-padtop size:设置顶部补齐的大小 像素单位
高级视频参数:
-g:设置图像组大小
-intra:仅适用帧内编码
-qscale:使用固定的视频量化标度(VBR)
-qmin:最小视频量化标度(VBR)
-qmax:最大视频量化标度(VBR)
-qdiff:量化标度间最大偏差 (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偏差
-bf frames:使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-4mv:使用4个运动矢量 仅用于mpeg4
-part:使用数据划分 仅用于mpeg4
-bug param:绕过没有被自动监测到编码器的问题
-deinterlace:不采用交织方法
-interlace:强迫交织法编码仅对mpeg2和mpeg4有效
-psnr:计算压缩帧的psnr
-vhook module:插入视频处理模块 module 包括了模块名和参数,用空格分开
音视频捕获参数:
-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测试)
格式:
h.264:输出格式为h.264的视频裸流
mp4:输出mp4格式的视频
......
2.常用命令
对本地YUV编码(视频为avi、mp4等也可以使用):
ffmpeg -s 640x480 -i test.yuv -vcodec libx264 test.h264
分离视频、音频流:
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流,后面copy表示拷贝
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流,后面copy表示拷贝
视频解复用:
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
视频转码:
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件
视频封装:
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
视频剪切:
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频
视频录制:
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
YUV序列播放:
ffplay -f rawvideo -video_size 1920x1080 input.yuv
YUV序列转AVI:
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
音视频混合:
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
视频拼接:
ffmpeg -i "concat:test1.h264|test2.h264" -vcodec copy -f h264 out12.h264 //裸码流的拼接,先拼接裸码流,再做容器的封装
网络推送:
ffmpeg - re - i 1.ts - c copy - f mpegts udp ://192.168.0.106:1234 //UDP视频流的推送
音频处理:
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0 //转换wav到mp2格式
视频拆成帧:
ffmpeg -i video.avi frames_%05d.jpg
图片合成视频:
ffmpeg -i frames_%05d.jpg -vcodec mpeg4 test.avi
图片顺序播放:
ffplay -i frames_%05d.jpg
将H264封装为avi:
ffmpeg -i input.h264 -s 640x480 output.avi
解封装:
ffmpeg -i test.avi -f h264 -vcodec libx264 -s 640x480 -r 25 test.264
推流:
ffmpeg -re -i test.h264 -vcodec copy -f h264 rtp/udp://233.233.233.223:6666
接收播放:
ffplay -f h264 rtp/udp://233.233.233.223:6666
参考博客:
http://blog.csdn.net/leixiaohua1020/article/details/12751349