0

当我使用 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

从这个输出中,我知道我的英特尔支持MainHighConstrainedBaseLine配置文件

(顺便说一句,我不知道“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 会抱怨该配置文件不受支持。但是如果正确调用了编码配置文件,为什么它对输出文件没有影响?

提前致谢

4

0 回答 0