ffmpeg.exe ошибка “Найдено 2 аппаратных устройства. Устройство cuda0 типа cuda выбрано по умолчанию для фильтров”

Вопрос или проблема

Два разных пользователя (насколько мне известно) сообщили об этой ошибке, используя мое приложение на Electron, которое имеет возможность записывать игровой процесс и обрезать повторы в виде моментов:

У них 4060 и 3060. У меня также 3060 и (естественно) эта ошибка не возникает у меня.

Мы также проверили вывод nvidia-smi, и зарегистрировано только одно устройство NVidia. Один из них также попытался отключить встроенный GPU-адаптер от ЦП, но без успеха.

Ошибка конкретно следующая: “Существует 2 аппаратных устройства. устройство cuda0 типа cuda по умолчанию выбрано для фильтров. Установите аппаратное устройство явно с опцией filter_hw_device, если устройство cuda0 не может быть использовано для фильтров.

Вот команда и лог выполнения ffmpeg:

[2024-12-18 00:46:10.210] [info]  Выполнение ffmpeg.exe -nostats -hide_banner -hwaccel cuda -hwaccel_output_format cuda -init_hw_device d3d11va -filter_complex ddagrab=offset_x=0:offset_y=0:video_size=1920x1080:framerate=60 -f gdigrab -framerate 60 -i desktop -f dshow -i audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2EBD7673-1FDC-4624-B31B-E3850A00954A} -ar 44100 -f dshow -i audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2EBD7673-1FDC-4624-B31B-E3850A00954A} -ar 44100 -filter_complex [1:a][2:a]amerge=inputs=2[a] -map 0:v -map [a] -colorspace bt709 -color_trc bt709 -color_primaries bt709 -c:v h264_nvenc -b:v 2500k -preset p3 -rc:v vbr -cq 27 -profile:v high -tune hq -rc-lookahead 30 -spatial-aq 1 -bf 2 -g 60 -acodec aac -fps_mode passthrough -f mpegts -
[2024-12-18 00:46:10.472] [info]  [info] [gdigrab @ 00000242f62ea540] Захват всего рабочего стола как 1920x1080x32 по координатам (0,0)

[2024-12-18 00:46:10.557] [info]  [info] [gdigrab @ 00000242f62ea540] Поток #0: недостаточно кадров для оценки скорости; рассмотрите возможность увеличения probesize

[2024-12-18 00:46:10.559] [info]  [info] Ввод #0, gdigrab, из 'desktop':
  Продолжительность: Н/Д, начало: 1734482770.491128, битрейт: 3981337 кбит/с
  Поток #0:0: Видео: bmp, bgra, 1920x1080, 3981337 кбит/с, 60 fps, 1000k tbr, 1000k tbn

[2024-12-18 00:46:11.649] [info]  [info] [aist#1:0/pcm_s16le @ 00000242f62f2140] Предполагаемая конфигурация каналов: стерео
Ввод #1, dshow, из 'audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2EBD7673-1FDC-4624-B31B-E3850A00954A}':
  Продолжительность: Н/Д, начало: 107919.758000, битрейт: 1411 кбит/с
  Поток #1:0: Аудио: pcm_s16le, 44100 Гц, стерео, s16, 1411 кбит/с

[2024-12-18 00:46:12.271] [info]  [info] [aist#2:0/pcm_s16le @ 00000242f6364f40] Предполагаемая конфигурация каналов: стерео
Ввод #2, dshow, из 'audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2EBD7673-1FDC-4624-B31B-E3850A00954A}':
  Продолжительность: Н/Д, начало: 107920.393000, битрейт: 1411 кбит/с
  Поток #2:0: Аудио: pcm_s16le, 44100 Гц, стерео, s16, 1411 кбит/с

[2024-12-18 00:46:12.467] [info]  [info] Потоковое сопоставление:
  Поток #1:0 (pcm_s16le) -> amerge (граф 1)
  Поток #2:0 (pcm_s16le) -> amerge (граф 1)
  ddagrab:default (граф 0) -> Поток #0:0 (h264_nvenc)
  Поток #0:0 -> #0:1 (bmp (нативный) -> h264 (h264_nvenc))
  amerge:default (граф 1) -> Поток #0:2 (aac)

[2024-12-18 00:46:12.469] [info]  [info] Нажмите [q], чтобы остановить, [?], чтобы получить помощь
Существует 2 аппаратных устройства. устройство cuda0 типа cuda по умолчанию выбрано для фильтров. Установите аппаратное устройство явно с опцией filter_hw_device, если устройство cuda0 не может быть использовано для фильтров.

[2024-12-18 00:46:12.473] [info]  [info]     Сообщение повторено 1 раз
[Parsed_amerge_0 @ 00000242f62f0340] Нет конфигурации каналов для ввода 1

[2024-12-18 00:46:12.476] [info]  [info] [Parsed_amerge_0 @ 00000242f62f0340] Конфигурации каналов ввода пересекаются: выходная конфигурация будет определяться количеством различных входных каналов
[Parsed_ddagrab_0 @ 00000242f62ef140] Не-D3D11VA входной hw_device_ctx
[Parsed_ddagrab_0 @ 00000242f62ef140] Не удалось настроить выходной пад на Parsed_ddagrab_0
[fc#0 @ 00000242f62e6200] Ошибка настройки графика фильтров: Неправильный аргумент
[fc#0 @ 00000242f62e6200] Задача завершена с кодом ошибки: -22 (Неправильный аргумент)
[fc#0 @ 00000242f62e6200] Завершение потока с кодом возврата -22 (Неправильный аргумент)

[2024-12-18 00:46:12.482] [info]  [info] Существует 2 аппаратных устройства. устройство cuda0 типа cuda по умолчанию выбрано для фильтров. Установите аппаратное устройство явно с опцией filter_hw_device, если устройство cuda0 не может быть использовано для фильтров.

[2024-12-18 00:46:13.042] [info]  [info] [vost#0:0/h264_nvenc @ 00000242fdaa6c80] [enc:h264_nvenc @ 00000242f634c280] Не удалось открыть кодер до EOF
[vost#0:0/h264_nvenc @ 00000242fdaa6c80] Задача завершена с кодом ошибки: -22 (Неправильный аргумент)
[vost#0:0/h264_nvenc @ 00000242fdaa6c80] Завершение потока с кодом возврата -22 (Неправильный аргумент)

[2024-12-18 00:46:13.092] [info]  [info] [out#0/mpegts @ 00000242f62ef680] Ничего не было записано в выходной файл, потому что хотя бы один из его потоков не получил пакетов.
кадр=    0 fps=0.0 q=0.0 Lq=13.0 размер=       0KiB время=Н/Д битрейт=Н/Д скорость=Н/Д    

[2024-12-18 00:46:13.212] [info]  [info] [aac @ 00000242f6398bc0] Qavg: 116.716

[2024-12-18 00:46:13.286] [info]  [info] Конвертация не удалась!

[2024-12-18 00:46:13.338] [info]  Процесс FFmpeg завершился с кодом 4294967274
[2024-12-18 00:46:13.339] [error] ffmpeg закрылся с ошибкой 4294967274

Спасибо!

Ответ или решение

Ошибка, с которой сталкиваются пользователи вашего приложения на базе Electron, связана с неправильной конфигурацией оборудования и несовместимостью между устройствами CUDA и фильтром. Прежде всего, давайте разберем сообщение об ошибке, которое говорит: "Есть 2 аппаратных устройства. Устройство cuda0 типа cuda выбрано для фильтров по умолчанию. Установите аппаратное устройство явно с помощью параметра filter_hw_device, если устройство cuda0 не доступно для фильтров".

Понимание проблемы

  1. Аппаратные устройства NVIDIA: Пользователи, столкнувшиеся с этой проблемой, имеют видеокарты NVIDIA 3060 и 4060. Ошибка указывает, что система обнаруживает два устройства CUDA, хотя nvidia-smi показывает только одно. Это может быть связано с тем, что приложение пытается использовать виртуальное или программное устройство вместо реального.

  2. Команда FFmpeg: Ваша команда использует аппаратное ускорение через CUDA, и происходит попытка конфигурирования графа фильтров с использованием этих устройств. Ошибка "Invalid argument" часто возникает из-за отсутствия необходимого устройства или его неправильной конфигурации.

Возможные решения

1. Явное указание устройства

Используйте параметр filter_hw_device в вашем вызове FFmpeg, чтобы явно указать, какое устройство использовать. Это особенно полезно, если у вас есть более одного устройства CUDA:

-init_hw_device cuda=cuda0 ...
-filter_complex ... -filter_hw_device cuda=cuda0 ...

Это направит FFmpeg на использование конкретного устройства.

2. Проверка конфигурации драйвера

Убедитесь, что драйверы NVIDIA установлены и обновлены до последней версии. Иногда устаревшие или некорректные установки драйверов могут приводить к проблемам с обнаружением устройств.

3. Изоляция проблемы

  • *Тестирование различных конфигураций:* Попробуйте запустить ваше приложение с различными настройками—отключив встроенное GPU, если это возможно, или тестируя на других системах.
  • Обновление FFmpeg: Убедитесь, что используется последняя стабильная версия FFmpeg, так как возможны исправления ошибок, которые решают ваши проблемы.

4. Логи и документация

Проверьте дополнительные логи FFmpeg для получения подробной информации об ошибках. Возможно, есть другие подсказки, указывающие на неправильную конфигурацию.

5. Общение с пользователями

Регулярно обновляйте ваших пользователей о ходе решения их проблемы. Это может повысить уровень доверия к вашему приложению и увеличить их лояльность.

Выводы

Ошибки при использовании FFmpeg с аппаратным ускорением могут быть сложными для диагностики, особенно с несколькими устройствами. Явное указание на используемое устройство может помочь решить проблему, но важно также проводить комплексную проверку системы, включая обновление драйверов и использование последней версии FFmpeg. Помните о необходимости поддерживать связь с вашими пользователями и предоставлять им наряду с информацией о проблемах возможные решения.

Оцените материал
Добавить комментарий

Капча загружается...