如何使用FFMPEG多GPU过程 我有个问题,找不到合适的答案。 它是关于使用多GPU进程的 我有3张图形卡,你可以看到: [![在此处输入图像描述][1][1]

如何使用FFMPEG多GPU过程 我有个问题,找不到合适的答案。 它是关于使用多GPU进程的 我有3张图形卡,你可以看到: [![在此处输入图像描述][1][1],ffmpeg,gpu,nvidia,multi-gpu,Ffmpeg,Gpu,Nvidia,Multi Gpu,如果未加载图像,请使用此图像链接: 我的问题是:当我使用cuda运行多个ffmpeg命令时,所有进程都分配给第一个GPU 如下图所示: [![在此处输入图像描述][2][2] 如果未加载图像,请使用此图像链接: 看到了吗?分配给第一个GPU的所有6个进程 我真的很困惑我怎么能修好它 我的FFMPEG代码是: ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i my-video.mp4 \ -vf scale_np

如果未加载图像,请使用此图像链接:


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

[![在此处输入图像描述][2][2] 如果未加载图像,请使用此图像链接:

看到了吗?分配给第一个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代码
请帮我找到答案。通过分享您的知识或一些可以帮助我的链接。

非常感谢。

这个过程似乎与我所能说的有很大差距:

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

知道索引后,-hwaccel_设备索引标志可用于设置活动GPU进行解码和编码。在下面的示例中,工作将在索引为1的gpu上执行


我以前读过。谢谢分享。但你有什么意见,我可以使用我的所有三个GPU?这告诉我们,我们可以只使用其中一个-hwaccel_设备0'或'-hwaccel_设备1'或'-hwaccel_设备2'。但是我需要全部使用这三个。你不能简单地为不同的文件执行相同的代码吗?“ffmpeg-vsync 0-hwaccel cuvid-hwaccel_设备1文件1.mp4…”,然后是“ffmpeg-vsync 0-hwaccel cuvid-hwaccel_设备2文件2.mp4…”但可能我误解了您的意图…不。你解决了我的问题。你的意见是解决这个问题的方法之一。但我正在寻找一个自动完成这项工作的answe。我认为这应该是告诉ffmpeg或cuda为我们做这件事的一种方式。我认为答案是“在一个系统中使用多个GPU时,必须将工作明确分配给一个GPU”。这似乎是不可能的,但您可以编写一个bash或python脚本来遍历文件夹中的所有文件,分配索引,并使用-hwaccel_device fileindex%numberofGPUs执行上述命令
ffmpeg -vsync 0 -i input.mp4 -c:v h264_nvenc -gpu list -f null –
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