ilostmyid2 Ответов: 1

970530 - как декодировать GPU в ffmpeg


платформа: Windows
применение: приложение WinForm
язык: C#
декодер: ffmpeg

Привет
Мы используем ffmpeg для декодирования кадров, отправленных нам по сети. Программа написана на C# и использует FFmpegInvoke, а также необходимые DLL-файлы, такие как avcodec-56.dll и еще avutil-54.dll для расшифровки кадров. Для этого нам нужно использовать GPU вместо CPU. Теперь используется процессор, и декодирование выполняется без каких-либо проблем.
Мой вопрос заключается в том, как я могу сказать ffmpeg использовать GPU вместо CPU для декодирования?
Есть ли какой-нибудь пример кода для этой цели?
Спасибо

Что я уже пробовал:

Я погуглил эту проблему и не нашел никакой подсказки.

1 Ответов

Рейтинг:
5

Jochen Arndt

Начните с чтения HWAccelIntro – Пакет Ffmpeg[^].

Для использования с API проверьте, доступен ли соответствующий декодер, и выберите его для декодирования (требуется, чтобы библиотека была построена с поддержкой этого декодера):

// C/C++ example to use the DXVA2 decoder
AVCodec* decoder = avcodec_find_decoder_by_name ("h264_dxva2");
avcodec_open2 (decoder_ctx, decoder, NULL);


ilostmyid2

прежде чем проверить, дайте мне знать, требуется ли использовать ffmpeg или я могу получить доступ к карте непосредственно для этой цели с помощью direcx или чего-то еще.

Jochen Arndt

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

ilostmyid2

я попробовал. возвращаемое значение avcodec_find_decoder_by_name равно NULL.

Jochen Arndt

Тогда этот декодер не поддерживается вашей версией ffmpeg.

ilostmyid2

как получить последнюю версию? я использую ffmpeginvoke.cs

Jochen Arndt

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

ilostmyid2

о ИК
да, лучше построить его самому. на данный момент я отмечаю это как ответ, потому что вы помогли мне в этой проблеме. и я надеюсь, что вы останетесь в теме, пока она не будет решена.
тнх