Аппаратное ускорение FFmpeg на Raspberry PI

Я создаю программу, которая использует ffmpeg для потоковой передачи содержимого веб-камеры через Интернет. Я хотел бы знать, можно ли использовать графический процессор для потоковой передачи на модели raspberry pi 3. Если да, то как я могу реализовать это на ffmpeg?


person Cristian Gabor    schedule 21.10.2016    source источник


Ответы (2)


Вам понадобятся некоторые дополнительные параметры настройки:

  • --enable-mmal — Включить уровень мультимедийной абстракции Broadcom (Raspberry Pi) через MMAL. Для аппаратного декодирования H.264, VC-1, MPEG-2, MPEG-4. В качестве зависимости вам понадобится пакет linux-raspberrypi-headers (Arch Linux) или linux-headers-*-raspi2 (Ubuntu), который предоставляет необходимый заголовочный файл mmal.h .

  • --enable-omx-rpi — включить код OpenMAX IL для Raspberry Pi. Для аппаратного кодирования H.264 (кодировщик называется h264_omx) и MPEG-4 (mpeg4_omx). В качестве зависимости вам понадобится пакет libomxil-bellagio (Arch Linux) или libomxil-bellagio-dev (Ubuntu), который предоставляет необходимый заголовочный файл OMX_Core.h.

Для пользователей Arch Linux:

Скопируйте файл PKGBUILD для пакета ffmpeg (возможно, через ABS, если хотите). Добавьте две новые опции конфигурации, показанные выше, и добавьте два упомянутых пакета в строку depends. Скомпилируйте/установите с помощью команды makepkg.

Отказ от ответственности: у меня нет ни одного из этих устройств, чтобы протестировать что-либо из этого. Большая часть этой информации была получена из файла FFmpeg configure.

person llogan    schedule 21.10.2016

Пакет ffmpeg от apt теперь поставляется с включенными аппаратными кодеками, поэтому вы можете просто установить его, используя:

apt install ffmpeg

В Pi есть несколько аппаратных кодеков, в зависимости от вашей модели. Вот выдержка из этого подробного сообщения/треда на форуме Raspberry Pi:

Pi0-3 имеют аппаратное ускорение декодирования для H264, MPEG4, H263, а также дополнительные лицензии на кодеки для MPEG2 и VC1.

Pi4 имеет такое же аппаратное ускорение декодирования для H264, но не для других кодеков. Он также имеет отдельный блок для HEVC.

Существует несколько API (v4l2m2m, VAAPI, OMX, MMAL,...) для доступа к аппаратным кодекам, но основным теперь является Интерфейс видеопамяти в память на основе h264_v4l2m2m, а также [более старый] h264_omx на основе OMX и другие. Полный список кодеков для кодирования и декодирования:

ffmpeg -codecs

Примечание. Если вы изменили настройку gpu_mem в /boot/config.txt, она должна быть больше 16, иначе вы получите ошибку со всеми аппаратными кодеками.

person Pierz    schedule 26.03.2021