【问题标题】:How use FFMPEG multi GPU proccess如何使用 FFMPEG 多 GPU 进程
【发布时间】:2021-05-05 01:29:47
【问题描述】:

我有一个问题,找不到任何合适的答案。
它关于使用多 GPU 进程。
我有 3 个显卡,你可以看到它:

[![在此处输入图像描述][1]][1]

如果图片未加载,请使用此图片链接:https://i.stack.imgur.com/msR83.jpgenter link description here


我的问题是:当我使用 cuda 运行多个 ffmpeg 命令时,所有进程都分配给了第一个 GPU。
如下图:

[![在此处输入图像描述][2]][2]

如果图片未加载,请使用此图片链接:https://i.stack.imgur.com/PfYfz.jpg

你看到了吗?分配给第一个 GPU 的所有 6 个进程。
我真的很困惑我该如何解决它。

我的 FFMPEG 代码是:

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i my-video.mp4 \
  -vf scale_npp=w=426:h=240 -c:v h264_nvenc -profile:v main -b:v 400k -sc_threshold 0 -g 25 \
  -c:a aac -b:a 64k -ar 48000 \
  -f hls -hls_time 6 -hls_playlist_type vod \
  -hls_allow_cache 1 -hls_key_info_file encription.keyinfo \
  -hls_segment_filename f-0-seg-%d.ts f-0.m3u8

我同时为 6 个不同的视频运行顶级 FFMPEG 代码。
请帮助找到答案。通过分享您的知识或一些可以帮助我的链接。
非常感谢。

【问题讨论】:

    标签: ffmpeg gpu nvidia multi-gpu


    【解决方案1】:

    据我所知,这个过程似乎相当简单: https://developer.nvidia.com/blog/nvidia-ffmpeg-transcoding-guide/

    在一个系统中使用多个 GPU 时,必须将编码和解码工作明确分配给 GPU。 GPU 由其索引号标识;默认情况下,所有工作都在索引为 0 的 GPU 上执行。使用以下命令获取系统中所有 NVIDIA GPU 的列表及其对应的 ID 号:

    ffmpeg -vsync 0 -i input.mp4 -c:v h264_nvenc -gpu list -f null –
    

    一旦知道了索引,-hwaccel_device 索引标志就可以用来设置活跃的 GPU 进行解码和编码。在下面的示例中,工作将在索引为 1 的 gpu 上执行。

    ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 1 -c:v h264_cuvid -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
    

    【讨论】:

    • 我以前读过。谢谢分享。但是您对我可以使用所有三个 GPU 有什么意见吗?这告诉我们我们可以只使用其中一个。 “-hwaccel_device 0”或“-hwaccel_device 1”或“-hwaccel_device 2”。但我需要使用所有三个。
    • 你不能简单地为不同的文件执行相同的代码吗? “ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 1 file1.mp4 ...”,然后是“ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 2 file2.mp4 ...”
    • 但也许我误解了你要做什么......
    • 没有。你不明白我的问题。您的意见是解决此问题的一种方法。但我正在寻找一个自动执行此操作的答案。我认为这应该是告诉 ffmpeg 或 cuda 为我们做这件事的一种方式。他们会自动在这三个 GPU 之间进行负载平衡。
    • 我认为答案是“在一个系统中使用多个 GPU 时,工作必须明确分配给 GPU”。这似乎不可能,但是您可以编写一个 bash 或 python 脚本来遍历文件夹中的所有文件,分配一个索引,并使用 -hwaccel_device fileindex%numberofGPUs 执行上述命令
    猜你喜欢
    • 2021-06-12
    • 2018-12-15
    • 2020-11-26
    • 2021-10-12
    • 2017-06-16
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多