FFMpeg常用命令

1.分离视频音频流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

2.视频解复用

解复用视频文件:就是提取出音频文件和视频文件的原始流数据。而对于aac和h264来说,提取出来的数据直接保存并不能成功的播放,原因就在ffmpeg解出的ES数据比较纯净,没有ADTS头,而很多解码器都是需要ADTS头信息来进行解码的,所以就要对aac数据进行头部adts结构的添加。

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

3.视频转码

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            //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
-c选项是-codec的缩写
-c:v  视频 video 等价于 vcodec
-c:a  音频 audio 等价于 acodec

4.视频封装

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5.视频剪切

ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取图片  -r 表示每秒提取多少张图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间。 -vcode copy和-acodec copy 表示所要使用的视频和音频的编码格式,copy表示原样拷贝。

6.视频录制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV序列转AVI

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

9.ffmpeg从视频中生成gif图片:

ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif

常用参数说明:
ffmpeg命令格式 :  ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
常用输入选项
-i filename:指定输入文件名。
-f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
-ss hh:mm:ss[.xxx]:设定输入文件的起始时间点,启动后将跳转到此时间点然后开始读取数据。
-t 读取时长
对于输入,以下选项通常是自动识别的,但也可以强制设定。
-c codec:指定解码器,需使用能力集列表中的名称。
-acodec codec:指定声音的解码器,需使用能力集列表中的名称。
-vcodec codec:指定视频的解码器,需使用能力集列表中的名称。
-b:v bitrate:设定视频流的比特率,整数,单位bps。
-r fps:设定视频流的帧率,整数,单位fps。
-s WxH : 设定视频的画面大小。也可以通过挂载画面缩放滤镜实现。
-pix_fmt format:设定视频流的图像格式(如RGB还是YUV)。
-ar sample rate:设定音频流的采样率,整数,单位Hz。
-ab bitrate:设定音频流的比特率,整数,单位bps。
-ac channels:设置音频流的声道数目。
常用输出选项
-f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
-c codec:指定编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
-acodec codec:指定声音的编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
-vcodec codec:指定视频的编码器,需使用能力集列表中的名称(编解码器设定为”copy“表示不进行编解码)。
-r fps:设定视频编码器的帧率,整数,单位fps。
-pix_fmt format:设置视频编码器使用的图像格式(如RGB还是YUV)。
-ar sample rate:设定音频编码器的采样率,整数,单位Hz。
-b bitrate:设定音视频编码器输出的比特率,整数,单位bps。
-ab bitrate:设定音频编码器输出的比特率,整数,单位bps。
-ac channels:设置音频编码器的声道数目。
-an 忽略任何音频流。
-vn 忽略任何视频流。
-t hh:mm:ss[.xxx]:设定输出文件的时间长度。
-to hh:mm:ss[.xxx]:如果没有设定输出文件的时间长度的画可以设定终止时间点。

音频选项
-aframes:等价于frames:a,输出选项,用于指定输出的音频帧数目。
-aq:等价于q:a,老版本为qscale:a,用于设定音频质量。
-atag:等价于tag:a,用于设定音频流的标签。
-af:等价于filter:a,用于设定一个声音的后处理过滤链,其参数为一个描述声音后处理链的字符串。
视频选项
-vframes:等价于frames:v,输出选项,用于指定输出的视频帧数目。
-aspect:设置宽高比,如4:3、16:9、1.3333、1.7777等。
-bits_per_raw_sample:设置每个像素点的比特数。
-vstats:产生video统计信息。
-vf:等价于filter:v,用于设定一个图像的后处理过滤链,其参数为一个描述图像后处理链的字符串。
-vtag:等价于tag:v,用于设定视频流的标签。
-force_fps:强制设定视频帧率。
-force_key_frames:显式控制关键帧的插入,参数为字符串,可以是一个时间戳,也可以是一个“expr:”前缀的表达式。如“-force_key_frames 0:05:00”、“-force_key_frames expr:gte(t,n_forced*5)”

主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频

推荐阅读更多精彩内容