Skip to content

Latest commit

 

History

History
87 lines (70 loc) · 6.78 KB

File metadata and controls

87 lines (70 loc) · 6.78 KB

Back to Main Readme

В прошивке используется специально сформированный пакет ffmpeg-imx, который включает в себя помимо ffmpeg ещё и поддержку ffserver для тестовых задач. В пакет включены конфигурационные файлы и скрипты запуска для системы инициализации procd, которая используется в openwrt. Для настройки нужно использовать кофнигурационные файлы:

  • /etc/config/ffmpeg
  • /etc/config/ffserver

/etc/config/ffmpeg

Для настройки доступны опции:

Опция Описание
in_device Системное устройство захвата, обычно, /dev/video0.
framerate Количество кадров в секунду, фреймрейт. Ввиду ограниченности производительности, лучше оставить значение 5.
resolution Разрешение видео, ввиду ограниченности производительности, лучше оставить 720x480. Для видео с низкой задержкой нужно использовать 320x240
vcodec Кодек исходящего видео.
qscale_v Параметр качества кодирования видеопотока. Оционален, можно не указывать при установке параметра b_v
b_v Скорость исходящего видео-потока. Опционален, можно не указывать при установке параметра qscale_v
override_ffserver Если ffmpeg используется с локальным ffserver, этот ключ желательно установить в '1', чтобы ffmpeg мог переопределять конфигурацию ffserver. При использовании p2p стриминга этот параметр можно опустить.
out_format Указывает формат/протокол исходящего потока. Ключ '-f' для ffmpeg. Обычно, принимает значение 'ffm' или 'rtp' или 'mpegts'
remote Адрес сервера назначения для трансляции, на этот адрес будет отсылаться поток.
enabled Ключ, включающий автозапуск ffmpeg при включении устройства.

На текущий момент, конфигурация оптимизирована, и изменять стоит только параметр remote

/etc/config/ffserver

Для настройки доступны опции:

Опция Описание
enabled Ключ, включающий автозапуск ffserver при включении устройства.
config Путь к конфигурационному файлу ffserver, большинство опций в конфигурационном файле будут игнорироваться, если ffmpeg запущен с override_ffserver


Пример P2P стриминга с низкой задержкой.

  1. Используйте конфигурацию ffmpeg на плате imx6ull
config ffmpeg ffmpeg
option in_device '/dev/video0'
option framerate '15'
option resolution '320x240'
option vcodec 'mpeg2video'
option qscale_v '5'
option override_ffserver '0'
option out_format 'mpegts'
option remote 'udp://192.168.1.100:5555'
option enabled '1'
Важно, в параметре 'remote' нужно указать адрес и порт удалённой стороны (сервер), на которую будет отсылаться поток.
  1. Для примера просмотра потока с минимальной буферизацией можно использовать ffplay на сервере. Например: $ ffplay -fflags -nobuffer -probesize 32 -sync ext -i udp://192.168.1.100:5555 Последним параметром выступает локальный адрес сервера, на который приходит поток. Другие параметры отвечают за низкую буферизацию потока перед выводом на экран.

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

Пример RTSP сервера на основе VLC.

Для пробного запуска стриминга выполните следующие шаги:

  1. Запустите на сервере: $ vlc -vvv -I dummy rtp://0.0.0.0:3333 --sout '#rtp{dst=0.0.0.0,port=3334,sdp=rtsp://0.0.0.0:8080/test.sdp}' Если vlc не установлен, то: $ sudo apt-get install vlc
  2. На плате imx6ull измените параметры override_ffserver (отключить, установить в "0"), remote (адрес удалённого сервера и порт на котором vlc слушает входящие подключения) и out_format (протокол rtp), чтоб конфигурационный файл выглядел следующим образом:
config ffmpeg ffmpeg
option in_device '/dev/video0'
option framerate '5'
option resolution '720x480'
option vcodec 'mpeg2video'
option b_v '192k'
option override_ffserver '0'
option out_format 'rtp'
option remote 'rtp://192.168.0.103:3333'
option enabled '1'
После этого перезапустите ffmpeg на imx6ull командой

/etc/init.d/ffmpeg restart

  1. Запустите воспроизведение, подключившись к серверу: $ vlc rtsp://127.0.0.1:8077/test.sdp Здесь 127.0.0.1 - адрес rtsp-сервера, запущенного на первом шаге. Т.е. подразумевается, что воспроизведение вы запускаете на той же машине, на которой запущен сервер.