【问题标题】:FFMPEG - how to identify a bottleneck in hardware transcoding?FFMPEG - 如何识别硬件转码的瓶颈?
【发布时间】:2018-08-06 06:34:00
【问题描述】:

在提供的示例中,我尝试使用 Nvidia 的硬件加速将 4K h264 源代码转码为 1080p h264 输出。

相关信息:

ffmpeg version git-2017-12-25-613f789 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
  libavutil      56.  7.100 / 56.  7.100
  libavcodec     58.  9.100 / 58.  9.100
  libavformat    58.  3.100 / 58.  3.100
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  7.100 /  7.  7.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100

使用的命令:

ffmpeg -c:v h264_cuvid -i "4K_input.mp4" -c:v h264_nvenc -preset slow -s 1920x1080 -c:a copy output.mkv

相关电脑规格:

GPU: (Gigabyte) GeForce GTX 1070 Ti
CPU: Intel Core i7 7700K
Memory: 8GB DDR4 2400MHz Single Channel.
SSD: Crucial CT525MX3

虽然 Nvidia Desktop 录制以高达 50Mbps 的比特率录制实时 h264 视频绝对没有问题,但这种低于 2600kbps 的编码在仅使用 35% 的 GPU 时非常慢。 我无法在任何视频参数上使用 100% 的 GPU。

这就是为什么我可以就如何识别(疑似)瓶颈提出一些建议。

【问题讨论】:

    标签: ffmpeg nvidia hardware video-processing hardware-acceleration


    【解决方案1】:

    “GPU”转码不能这样工作。 Nvidia GPU 上有专门用于 h264 编码的固定功能电路,它们不属于矢量单元池。这就是为什么您指定 h264_nvenc(nvenc 是 Nvidia 特定的)而不是通用的 gpu 编码器的原因。

    TLDR,您不会达到 100% GPU,因为它并没有真正使用 GPU。它使用 GPU 附带的单独组件。

    【讨论】:

    • 这几乎就是关于硬件编码的 FFMPEG 手册(发现 trac.ffmpeg.org/wiki/HWAccelIntro)指定为“使用 CUVID 和 NVENC 的完整硬件转码”。我应该尝试使用我的 GPU 支持的不同硬件加速解决方案吗? (如果它不是瓶颈的话。)
    • 我添加了图像以可视化您的答案 - 随时回滚。多个视频同时编码可以达到100%
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 2022-01-06
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2023-03-22
    相关资源
    最近更新 更多