FFmpeg:如何使用 scale_qsv 放大视频?

FFmpeg:如何使用 scale_qsv 放大视频?

我尝试了这里的命令:https://trac.ffmpeg.org/wiki/Hardware/QuickSync

ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.mp4 -vf 'vpp_qsv=framerate=60,scale_qsv=w=1920:h=1080' -c:v h264_qsv output.mp4

并将 hevc_qsv 替换为 h264_qsv:

ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -vf 'vpp_qsv=framerate=60,scale_qsv=w=1920:h=1080' -c:v h264_qsv output.mp4

这是我得到的输出:

WARNING: defaulting child_device_type to AV_HWDEVICE_TYPE_DXVA2 for compatibility with old commandlines. This behaviour will be removed in the future. Please explicitly set device type via "-init_hw_device" option.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[AVFilterGraph @ 0000016db059aac0] No such filter: 'scale_qsv=w=1920:h=1080'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
[aac @ 0000016db0c60740] Qavg: 65536.000
[aac @ 0000016db0c60740] 2 frames left in the queue on closing
Conversion failed!

我使用的计算机配备了英特尔第 11 代 i5-1135G7,我知道它支持 QSV 编码器。

答案1

以下命令有效(针对特定的硬件和软件配置):

ffmpeg -y -init_hw_device qsv=hw,child_device_type=dxva2 -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv -i input.mp4 -vf "vpp_qsv=framerate=60,scale_qsv=w=640:h=480" -c:v h264_qsv output.mp4


为测试而构建input.mp4:解码
h264_qsv不支持yuv444p像素格式(至少我的硬件不支持)。

为了确保像素格式正确yuv420p,构建input.mp4文件(用于测试):

ffmpeg -y -f lavfi -i testsrc=size=320x240:rate=10:duration=10 -vcodec libx264 -pix_fmt yuv420p input.mp4


用于测试的软件配置:

  • Windows 10,带有更新的 Intel HD Graphics 驱动程序。
  • FFmpeg 版本 5.0.1-full_build-www.gyan.dev

用于测试的硬件配置:

  • 英特尔酷睿 i7 Gen 6(iGPU:英特尔高清显卡 530)。
  • 主显示器连接至英特尔 GPU(当 NVIDIA GPU 也存在时)。

注意,
有一条警告信息:

[h264_qsv @ 0000025ac57dc040] 解码调用未消耗任何数据:输入时需要更多数据(-10)

但输出好像没什么问题。

相关内容