Організація відеотрансляції на сайті

сайті

Як видно на діаграмі, для транскодування використовується VLC, а H264-потік забирається Erlyvideo безпосередньо, благо це він вміє. Для організації HTTP Live Streaming також використовується VLC, налаштування якого ми побачимо нижче.

За традицією деталі установки наведу для Debian Squeeze 6.0 amd64, оскільки для цієї архітектури існує репозиторій Erlyvideo. Відразу зазначу, трансляція в прикладах ведеться без звуку.

1. Підготовка Додаємо репозиторії для Debian Multimedia, nginx та Erlyvideo: /etc/apt/sources.list.d/debian-multimedia.list

Звертаю вашу увагу на те, що репозиторій Erlyvideo доданий для майбутнього оновлення Debian до Wheezy, т.к. остання версія Erlyvideo із пакетів ставиться тільки на цю версію дистрибутива.

2. Установка ffmpeg, libvpx, fdk-aac, x264, openssl

apt-get install make automake g++ gcc autoconf lua5.1 liblua5.1- 0 -dev libtag1-dev \ libdvbpsi-dev libcdio-dev libvcdinfo-dev libcddb2-dev libmad0-dev libfaad-dev liba52. dev \ libmpeg2-4-dev libzvbi-dev libflac-dev libdca-dev libdirac-dev libdvdnav-dev libdvdread-dev libfaac-dev \ libgcrypt11-dev libgnutls-dev libgpac-dev dev libmp3lame-dev \ libmodplug-dev libpng12-dev libraw1394-dev libschroedinger-dev libspeex-dev libtag1-dev \ libtasn1- 3 -dev libtheora-dev libtwolame-dev lib \ librtmp-dev checkinstall git libopencore-amrnb-dev libopencore-amrwb-dev pkg-config yasm zlib1g-dev

# x264 cd /usr/local/src git clone --depth 1 git : //git.videolan.org/x264 cd x264 ./configure --enable-pic -- enable-shared make sudo checkinstall --pkgname=x264 --pkgversion=" 3 : $ ( ./version.sh \ awk-F' [ " ] ' '/POINT/ < print $4"+git"$5 >' ) " --backup=no --deldoc=yes \ --fstrans=no --default

# fdk-aac cd /usr/local/src git clone --depth 1 git : //github.com/mstorsjo/fdk-aac.git cd fdk-aac autoreconf - fiv ./configure --with-pic --enable-shared make sudo checkinstall --pkgname=fdk-aac --pkgversion="$ ( дата +%Y%m%d%H %M ) -git" --backup=no \ --deldoc=yes --fstrans=no --default

# libvpx cd /usr/local/src git clone --depth 1 http : //git.chromium.org/webm/libvpx.git cd libvpx ./configure --enable -pic --enable-shared --disable-unit-tests make sudo checkinstall --pkgname=libvpx --pkgversion=" 1 : $ ( дата +%Y%m%d%H%M ) -git" --backup=no \ --deldoc=yes --fstrans=no --default

# ffmpeg cd /usr/local/src git clone --depth 1 git : //source.ffmpeg.org/ffmpeg cd ffmpeg ./configure --enable-gpl -- enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb \ --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis \ --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-pic --enable-shared make sudo checkinstall --pkgname=ffmpeg --pkgversion=" 5 : $ ( дата + %Y%m%d%H%M ) -git" --backup=no \ --deldoc=yes --fstrans=no --default

# openssl # . ДЛЯ КОРЕКТНОЇ РАБОТИ ERLYVIDEO на Debian Squeeze. # . Для Debian Wheezy можна apt-get install libssl1.0.0 . cd /usr/local/src wget http : //www.openssl.org/source/openssl-1.0.1c.tar.gz tar -xvzf openssl-1.0.1c.tar.gz cd openssl-1.0.1c ./config --prefix=/usr zlib-dynamic --openssldir=/etc/ssl shared make sudo checkinstall --pkgname=openssl --pkgversion =" 5 : $ ( дата +%Y%m%d%H%M ) -git" --backup=no \ --deldoc=yes --fstrans=no --default

хеш x264ffmpeg ffplay ffprobe ldconfig

3. Установка VLC

4. Установка nginx

5. Установка Erlyvideo

6. Конфігурація VLC Створюємо скрипт /home/ipcam/start_vlc.sh (не забудьте змінити CONTROLPASSWORD):

Для простоти та зручності запуску будемо використовувати VLM. Файл /home/ipcam/config:

# MPEG-4 IP-камера new mpeg4mux broadcast enabled # H264 IP-камера new h264mux broadcast enabled

control mpeg4mux play control h264mux play

Створюємо директорії для запису логів VLC та встановлюємо права:

7. Конфігурація Erlyvideo Правимо секцію rewrite у файлі /etc/erlyvideo/erlyvideo.conf:

8. Конфігурація nginx Для коректної роботи HLS додаємо в /etc/nginx/mime.types:

Створюємо директорії для файлів HLS:

9. Запуск сервісів

Дивимося логи та перевіряємо, що все запустилося нормально.

10. Виведення на HTML-сторінку

. This will be replaced by the SWF. //', file: 'video1',

11. TODO Перелічу можливі поліпшення, які не будуть зайвими:

  1. Watchdog для перевірки працездатності VLC, який перезапускатиме необхідні сервіси у разі втрати потоків з камер
  2. Створення плейлиста для JW Player
  3. Logrotate для логів VLC
  4. Скрипт для організації архівів записів, реалізується через telnet-інтерфейс VLC, завдання не дуже проста, але цікава ;)

Крім того, зараз активно розвивається JW Player Adaptive Provider.На превеликий розчарування, розробники JW Player включили підтримку HLS для Flash в платні версії плеєра. Що ж, чекатимемо появи підтримки HLS на non-Apple пристроях, що дозволить відмовитися від RTMP. Для використання HDS, можнаскористатися третьою версією Erlyvideo - Flussonic та його підтримкою HDS. Наскільки я зрозумів, його ядро ​​підтримка HLS не включена. Ну а наявність Open Source Media Framework дозволяє створювати свої плеєри для RTMP та HTTP-стримінгу.