我试图将一系列png文件编码成HEVC编解码器视频,并在以下参数中使用ffmpeg (版本足够现代):
-hwaccel cuda -r 60000/1001 -f image2 -i output%05d.png -c:v hevc_nvenc -preset hevc_nvenc -profile:v main10 -level 6.2 -pix_fmt yuv444p16le output.mkv
然后我得到了一个mkv视频文件,我发现它不能用DXV2解码,而是用解码,这占用了我大量的CPU。然而,我也发现,其他的HEVC编解码视频文件,具有类似的性质,我的视频,可以用DXV2解码器使用我的GPU解码。有人能帮我找到一种方法,让一个HEVC编解码视频可以用GPU解码吗?非常感谢。
发布于 2022-01-26 18:32:49
我猜你的问题是关于-pix_fmt yuv444p16le
的。我不知道你的PNG是什么格式,但它通常是8位/组件RGB。您正在将其重采样到16位/组件4:4:4 YUV,然后使用它作为HEVC编码器的输入,无论其最接近的邻居是什么(根据源代码中的注释,10位/组件YUV-4:4:4 )。
4:4:4有时硬件解码器不支持(参见这里)。还请参阅来自这里的引用
许多现有的终端客户端设备/GPU/SoC支持硬件解码4:2:0,但不支持4:4:4,而更新的硬件和GPU正在引入4:4:4解码器,许多现有设备只支持4:2:0解码。
我会尝试-pix_fmt p010le
,这应该会导致YUV-4:2:0 10位/组件,它应该可以很好地与所有硬件解码器工作。
https://stackoverflow.com/questions/70864637
复制相似问题