QuckSync h264_qsv 可以进行 4.2.2 (p010le) 编码吗?

QuckSync h264_qsv 可以进行 4.2.2 (p010le) 编码吗?

我遇到了一个无法解决的奇怪情况。

当我检索我正在使用的 ffmpeg 构建的编码器特性时,它显示 h264_qsv 编解码器支持三种像素格式:

''' I:\Downloads>ffmpeg -hide_banner -hcoder=h264_qsv 编码器 h264_qsv [H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video 加速)]: 常规功能:延迟混合 线程功能:无 支持的硬件设备:qsv qsv qsv 支持的像素格式:nv12 p010le qsv h264_qsv 编码器 AVOptions:-async_depth E..V....... 最大处理并行度(从 1 到 INT_MAX)(默认值为 4)-avbr_accuracy E..V....... AVBR 速率控制的准确度(从 0 到 INT_MAX)(默认值为 0)-avbr_convergence E..V....... AVBR 速率控制的收敛(从 0 到 INT_MAX)(默认值为 0)-preset E..V....... (从 1 到 7)(默认中等)非常快 7 E..V.......

[等等。]

'''

但是,当我复制像素格式“p010le”并将其粘贴到用于转码的批处理文件中时,如果我让它使用默认的 nv12 格式,它就会起作用,但我收到一个错误:

''' 我:\Capture>ffmpeg -hide_banner -err_detect ignore_err -loglevel info -stats -benchmark -init_hw_device qsv:hw,child_device_type=qsv -hwaccel qsv -hwaccel_output_format qsv -vsync vfr -ec deblock -ss 00:01:32.432 -to 00:10:53.064 -i "Little Cheeser 1936 raw.avi" -strict normal -fflags +igndts+genpts -c:a aac -q:a 0.9 -ac 1 -af dynaudnorm -g 60 -async_depth 128 -vf “hwupload=extra_hw_frames=128,format=p010le,vpp_qsv=cw=948:ch=720:cx=0:cy=0”-q:v 28 -c:v h264_qsv -preset veryslow -rdo 1 -extbrc 1 -look_ahead_depth 100 -look_ahead_downsampling auto -avbr_accuracy 500 -mbd rd -refs 4 -me_range 1024 -trellis 2 -idct auto -subq 8 -adaptive_i 1 -adaptive_b 1 -flags +aic+mv4+qpel+ilme+loop -movflags +faststart“Little Cheeser 1936.mp4”输入#0,avi,来自‘Little Cheeser 1936 raw.avi’:持续时间: 00:11:06.16,开始:0.000000,比特率:4157 kb/s 流 #0:0:视频:h264 (High 4:2:2) (H264 / 0x34363248),yuv422p(逐行),1280x720 [SAR 1:1 DAR 16:9],3943 kb/s,60 fps,60 tbr,60 tbn,120 tbc 流 #0:1:音频:ac3 ([0] [0][0] / 0x2000),48000 Hz,立体声,fltp,192 kb/s 文件“Little Cheeser 1936.mp4”已存在。是​​否覆盖? [y/N] y 流映射:流 #0:0 -> #0:0 (h264 (原生) -> h264 (h264_qsv)) 流 #0:1 -> #0:1 (ac3 (原生) -> aac (原生)) 按 [q] 停止,按 [?] 获取帮助

无法在过滤器“Parsed_hwupload_0”和过滤器“auto_scaler_0”支持的格式之间进行转换 重新初始化过滤器时出错!无法将帧注入过滤器网络:功能未实现 处理流#0:0 工作台的解码数据时出错:maxrss=60096kB 转换失败!'''(我在错误前插入了一个空白行,以便于查找。)

我尝试将视频过滤器流简化为“format=p0101le”,但同样失败。我还尝试在视频过滤器之外的命令中使用“-pix_fmt p010le”单独执行此操作,也出现错误。我尝试将命令精简到最基本的内容,但这也无法修复错误。

我不明白为什么 ffmpeg 会提取有关编解码器的信息并说它支持 p0101le(如果不支持的话)。有人能解释一下吗?

相关内容