如何使用FFMPEG多GPU进程

How use FFMPEG multi GPU proccess


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

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

如果图像未加载使用此图像 link : https://i.stack.imgur.com/msR83.jpg enter link description here


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

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

如果图像未加载使用此图像link:https://i.stack.imgur.com/PfYfz.jpg

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

我的 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

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

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

Encoding and decoding work must be explicitly assigned to a GPU when using multiple GPUs in one system. GPUs are identified by their index number; by default all work is performed on the GPU with index 0. Use the following command to obtain a list of all NVIDIA GPUs in the system and their corresponding ID numbers:

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

Once you know the index, the -hwaccel_device index flag can be used to set the active GPU for decoding and encoding. In the example below the work will be executed on the gpu with index 1.

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