0

我正在使用 NVENC HEVC 编码器对一些 4K 10 位 YUV 测试序列进行编码。对于示例序列和配置,我使用以下命令。

ffmpeg -hide_banner -benchmark -loglevel debug -y -f rawvideo -s:v 3840x2160 -r 50 -pix_fmt yuv420p10le -i ParkRunning3_3840x2160_50fps_10bit_420.yuv -c:v hevc_nvenc -preset hp -rc cbr -profile:v main10 -b:v 10M output.mp4

我的目标是实现尽可能低的延迟;因此我将预设设置为低延迟高性能。但是,使用此命令我只能获得大约 15 fps 的编码速度。来自上述命令的 ffmpeg 输出的日志文件位于此处

我还尝试了不同的预设和不同的序列。我编码的所有 10 位序列的结果都相似。对于 1920x1080 10 位序列,我使用 HEVC 编码器获得大约 50-60 fps。但是对于 8 位序列,我在具有类似预设和速率控制模式的情况下获得了大约 450-500 fps 的更高吞吐量。在示例中,我使用 CBR 作为速率控制模式,但我也在 VBR 和恒定 QP 模式下测试并获得了类似的结果(在编码吞吐量方面)。

我的 10 位 HEVC 编码命令中是否缺少任何内容?我知道对于 10 位,由于位深度的增加,编码需要更长的时间。但是这种规模的吞吐量减少让我觉得我做错了什么。似乎 FFmpeg 在从 yuv420p10le(我的输入格式)转换为 p010le(NVENC 接受的 10 位格式)的编码器之前插入了一个 auto_scaler。这个缩放模块能否如此大幅度地降低编码器速度?

4

1 回答 1

0

尝试替换-pix_fmt yuv420p10le-pix_fmt yuv422p10le

于 2021-04-10T07:27:06.447 回答