我有个问题,找不到合适的答案。
它是关于使用多GPU过程的。
我有3张显卡,你可以看到:
如果图像未加载,请使用此图像链接:https://i.stack.imgur.com/msR83.jpg 在这里输入链接描述
我的问题是:当我使用cuda运行多个ffmpeg命令时,所有进程都分配给第一个GPU。
如下图所示:
如果图像未加载,请使用此图像链接: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
我在同一时间运行6段不同视频的顶级FFMPEG代码。
请帮忙找出答案。通过分享你的知识或者一些可以帮助我的链接。
非常感谢。
发布于 2021-01-31 19:51:07
从我所能判断的情况来看,这个过程似乎相当快: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://stackoverflow.com/questions/65983094
复制相似问题