command example:
./ffmpeg.exe -i /the/path/to/video -c:v video_encode -b:v video_bitrate -pix_fmt pix_format -r fps -profile:v video_profile -s widthxheight -c:a audio_encode -b:a audio_bitrate /the/path/to/output/video
解压ffmpeg.7z
打开cmd窗口(win+r后输入cmd)
切换到ffmpeg/bin目录(输入命令:cd /d ffmpeg/bin的绝对路径)
测试命令:
./ffmpeg.exe -i 输入文件的绝对路径 -c:v 视频编码格式 -b:v 视频码率 -pix_fmt 像素格式 -r 视频帧率 -profile:v 视频质量 -s 分辨率 -c:a 音频编码格式 -b:a 音频码率 输出文件的绝对路径
输入文件的绝对路径或输出文件的绝对路径中含有空格时,必须加上英文双引号
比如:./ffmpeg.exe -i "C:\\t e s t.mp4" "D:\\output 1.mp4"
如果输出文件已存在,会询问是否要覆盖,y为覆盖,n为结束转码
如果想要转码的时候直接覆盖输出文件,需要加上-y
比如:./ffmpeg.exe -i "C:\\test.mp4" -y "D:\\output.mp4"
视频编码格式:
libx264 - H264(可支持的音频编码格式:aac、libmp3lame)
prores_ks - prores(可支持的音频编码格式:pcm_s16le、pcm_s24le、pcm_s32le)
mpeg2video - MPEG2(可支持的音频编码格式:mp2)
mpeg2video - MPEG2-PS(可支持的音频编码格式:mp2、libmp3lame、pcm_s16be、16位的pcm_dvd、pcm_s16be、ac3、dts)
如果要指定编码格式,请务必加上这个选项,如果想要ffmpeg自动根据你的文件名猜测编码格式,可以不加
视频码率(可选):
例子1:200k
例子2:20M
大小写不敏感
如果要设定为恒定码率,需要在后面加上"-minrate 码率 -maxrate 码率"
比如:-b:v 200k -minrate 200k -maxrate 200k
像素格式(可选):
yuv420p
yuv422p
yuv422p10le
yuv420p10le
yuyv422
yuv444p
查看所有像素格式选项的命令:./ffmpeg.exe -pix_fmts
不是所有像素格式都会被你选择的编码格式所支持,不支持的时候会报错并在转码过程中退出
帧率(可选):
可以是整数,也可以是小数
不是所有帧率都会被你选择的编码格式所支持,比如MPEG2是不支持某些帧率的,不支持的时候会报错并在转码过程中退出
视频质量(可选):
H264支持的视频质量:baseline main high high10 high422
prores支持的视频质量:proxy lt standard hq 4444 4444xq
MPEG2video支持的视频质量:422 high ss snr main simple
视频等级(可选)
H264支持的视频等级:1 1b 1.1 1.2 1.3 2 2.1 2.2 3 3.1 3.2 4 4.1 4.2 5 5.1 5.2 6 6.1 6.2
MPEG2支持的视频等级:high high1440 main low
prores没这个选项
分辨率(可选):
例子1:1920x1080
例子2:1280x720
可以自定义分辨率大小,但长和宽都必须是整数,用英文字符x连接
不是所有分辨率都会被你选择的编码格式所支持,不支持的时候会报错并在转码过程中退出
音频编码格式(可选):
aac
libmp3lame - MP3
mp2
ac3
flac
pcm_s16le - PCM
pcm_s24le - PCM
pcm_s32le - PCM
pcm_s16be - PCM
pcm_dvd - PCM
ac3
dts
查看所有音频编码格式,输入./ffmpeg.exe -encoders
不是所有视频编码格式和视频格式都会支持你所选择的音频编码格式,不支持的时候会报错并在转码过程中退出
音频码率(可选):
例子1:64k
例子2:128k
例子3:320k
例子4:384k - aac格式
当你选择的音频码率与音频编码格式或与视频格式不兼容时会报错并退出
转码为H264 音频编码为aac的测试例子:
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -c:a aac "C:\\test.mp4"
码率为200k的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -b:v 200k "C:\\test.mp4"
恒定码率为200k的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -b:v 10M -minrate 10M -maxrate 10M "D:\\test.mp4"
码率为200k,帧率为25的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -b:v 200k -r 25 "C:\\test.mp4"
码率为2M,视频质量为main的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -b:v 2M -profile:v main "C:\\test.mp4"
分辨率为1080p的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -s 1920x1080 "C:\\test.mp4"
视频质量为main的H264
./ffmpeg.exe -i "C:\\test.avi" -c:v libx264 -profile:v main "C:\\test.mp4"
转码为prores,音频为pcm_s24le的测试例子
./ffmpeg.exe -i "C:\\test.avi" -c:v prores_ks -c:a pcm_s24le "C:\\test.mov"
转码为prores 422 standard,音频码率为128k的测试例子
./ffmpeg.exe -i "C:\\test.avi" -c:v prores_ks -profile:v standard -c:a 128k "C:\\test.mov"
转码为prores 422 hq
./ffmpeg.exe -i "C:\\test.avi" -c:v prores_ks -profile:v hq "C:\\test.mov"
转码为prores4444
./ffmpeg.exe -i "C:\\test.avi" -c:v prores_ks -profile:v 4444 "C:\\test.mov"
转码为prores4444 xq
./ffmpeg.exe -i "C:\\test.avi" -c:v prores_ks -profile:v 4444xq "C:\\test.mov"
备注:prores4444和prores4444 xq都支持alpha通道,其他的不支持
其他参数可以参照H264的输入
转码为MPEG2-PS的例子:
必须加-f vob参数
MPEG2-PS支持的音频编码格式:mp2 libmp3lame pcm_s16be pcm_dvd pcm_s16be ac3 dts
测试例子:
./ffmpeg.exe -i "C:\\test.avi" -c:v mpeg2video -pix_fmt yuv422p -c:a pcm_s16be -f vob "C:\\output.mpg"
备注:
想要转码成MPEG2-PS,当音频为pcm格式时,只支持16bit
当你选择的转码的音频编码格式与要转码的文件的音频流格式不兼容时,会出问题
转码为MPEG2-IBP的例子
必须加-bf 1 -b_strategy 0 -sc_threshold 0参数
测试例子:
./ffmpeg.exe -i "C:\\test.avi" -c:v mpeg2video -bf 1 -b_strategy 0 -sc_threshold 0 "C:\\output.mpg"