【问题标题】:FFmpeg GPU 10-bit HEVC encoding using NVENC使用 NVENC 的 FFmpeg GPU 10 位 HEVC 编码
【发布时间】:2019-09-11 16:58:20
【问题描述】:

我正在使用 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 输出的日志文件是 here

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

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

【问题讨论】:

    标签: ffmpeg nvenc


    【解决方案1】:

    尝试将-pix_fmt yuv420p10le 替换为 -pix_fmt yuv422p10le

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 2018-11-30
      • 2022-01-21
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多