当我使用 ffmpeg 和 vaapi 编码器时,我知道我可以在命令行中指定“配置文件”:
ffmpeg ... -i input.wmv -c:v h264_vaapi -profile:v PROFILE_NUMBER output.mp4
由于我使用的是 vaapi,我知道我需要通过键入来查看我的英特尔 CPU 实际支持的配置文件类型
$ vainfo|grep -i enc|grep 264
libva info: VA-API version 1.13.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_13
libva info: va_openDriver() returns 0
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
从这个输出中,我知道我的英特尔支持Main、High和ConstrainedBaseLine配置文件
(顺便说一句,我不知道“VAEntrypointEncSlice”和“VAEntrypointEncSliceLP”是什么意思)
通过交叉引用维基页面 https://en.wikipedia.org/wiki/Advanced_Video_Coding#Profiles
相应的“配置文件编号”是 77 100 和 66
问题是指定特定的配置文件没有任何影响。换句话说
ffmpeg ... -i input.wmv -c:v h264_vaapi -profile:v 77 output-77.mp4
ffmpeg ... -i input.wmv -c:v h264_vaapi -profile:v 100 output-100.mp4
ffmpeg ... -i input.wmv -c:v h264_vaapi -profile:v 66 output-66.mp4
产生完全相同大小的输出文件。
我的问题是:出了什么问题?很明显,我调用了正确的配置文件,否则 ffmpeg 会抱怨该配置文件不受支持。但是如果正确调用了编码配置文件,为什么它对输出文件没有影响?
提前致谢