FFmpeg常用基本命令

FFmpeg常用基本命令

常用参数说明

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

手头常用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//按照固定高宽截取
//宽:1202
//高:677
//0 左右要去掉宽度
//130 上下要去掉的宽度

ffmpeg -i video.mp4 -vf crop=1202:677:0:130 -c:a copy video3.mp4

//截取部分时间
//-ss 开始时间
//-t 结束时间

ffmpeg -ss 00:00:09 -t 00:02:13 -i ScreenFlow11.mp4 -vcodec copy -acodec copy t.mp4


//转大小 iphone max
ffmpeg -i EP02.mp4 -strict -2 -vf scale=1242:-2 2.mp4

//转720p
ffmpeg -i EP02.mp4 -strict -2 -vf scale=-2:720 2.mp4

//640x480
ffmpeg -i input.avi -s 640x480 output.avi

//vga分辨率
ffmpeg -i input.avi -strict -2 -s vga output.avi

//字幕导入
ffmpeg -i 1.mkv -metadata title="步履不停" -strict -2 \
vf subtitles=1.srt -metadata:s:s:0 language=chs out.mp4

//从mkv转MP4,并用mkv中的中文字幕和视频音频合成
ffmpeg -i input.mkv -filter_complex "[0:v:0]subtitles=input.mkv:si=5[v]" \
metadata title="星球大战4新希望" -map "[v]" -map 0:a:0 -c:a copy output.mp4

常规使用组合

分离视频音频流
1
2
3
//分离视频流
ffmpeg -i input_file -vcodec copy -an output_file_video  
ffmpeg -i input_file -acodec copy -vn output_file_audio
视频解复用
1
2
3
//分离音频流
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
视频转码
1
2
3
4
5
6
7
8
9
//转码为码流原始文件
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

//转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi
视频封装
1
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
视频剪切
1
2
3
4
5
6
//提取图片
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg

//剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi
视频录制
1
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
抓屏
1
2
3
4
5
6
7
ffmpeg -f gdigrab -i desktop out.mpg 

//从屏幕的(10,20)点处开始,抓取640x480的屏幕,设定帧率为5 :
ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg

//ffmpeg从视频中生成gif图片:
ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif
格式转换
1
2
3
4
5
6
7
8
//M2TS TO MP4
ffmpeg -i input.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" output.mp4

//MP4 TO WEBM (HIGH)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 25 -threads 2 output.webm

//MP4 TO WEBM (MEDIUM)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 35 -threads 2 output.webm