如何使用 FFMPEG 多 GPU 进程


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

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

如果图片未加载,请使用此图片链接:https://i.stack.imgur.com/msR83.jpg enter 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 代码。
请帮助寻找答案。通过分享您的知识或一些可以帮助我的链接。
非常感谢。

zxbzhangyi 回答:如何使用 FFMPEG 多 GPU 进程

据我所知,这个过程似乎相当直接: 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
本文链接:https://www.f2er.com/1007153.html

大家都在问