Вот что я делаю прямо сейчас:

Я отправляю телеканал в прямом эфире с teradek vidiu, который отправляет видео через RTMP на экземпляр AWS EC2 с проворным сервером стримеров, настроенным несколько месяцев назад с помощью wmspanel (в пробный период). Быстрый сервер перекодирует rtmp и дает мне HLS (m3u8), который я проигрываю на веб-странице с помощью peer5 (jwplayer). Проблема заключается в том, что видео в реальном времени идет только в формате HD, и клиенты с низкоскоростными соединениями не могут видеть видео или иногда заикаются.

Что я хочу:

Мне нужен адаптивный поток, к которому может подключиться каждый, при низкой скорости для просмотра видео с более низким битрейтом и на высокой скорости для просмотра HD-видео. Я знаю, что могу сделать это с такими серверами, как wowza и другие, проблема в цене, мне нужен бесплатный сервер с бесплатной панелью управления. Сервер Nimble бесплатен, а wmspanel - нет, и теперь я не могу ничего изменить или сделать что-либо, чтобы стать проворным, потому что пробный период на wmspanel закончился !.

Пожалуйста, помогите мне с этим!

0
Amin Gomez Daza 14 Май 2016 в 14:46

2 ответа

Лучший ответ

Все, что вы просите, можно сделать с помощью nginx, nginx-rtmp и ffmpeg, все бесплатное программное обеспечение. У меня есть установка, похожая на вашу (BlackMagic H264 Pro вместо Teradek, но в остальном такая же), передающая пару телеканалов.

Единственная проблема заключается в том, что вам нужно будет самостоятельно скомпилировать nginx с модулем rtmp, и если вам понадобится какая-то панель управления, вам придется написать ее самостоятельно.

Моя установка работает так:

1.- BM H264 Pro на локальном сервере, подключенном к коммутатору прямой трансляции, отправляет поток HD в экземпляр EC2 с Fedora 23.

2.- Nginx-rtmp принимает входные данные и вызывает ffmpeg для создания шести различных потоков реального времени HLS (180p, 240p, 360p, 480p, 720p, 1080p), которые затем обслуживаются через CloudFront CDN для обеспечения скорости.

Он работает очень хорошо, и у меня не было никаких проблем, CloudFront принимает потоки прямо из экземпляра EC2, и скорость потрясающая. Вам нужен довольно мощный экземпляр (я использую m4.4xlarge) для параллельного кодирования.

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

-------- Обновление 04 августа --------

Вот мой файл conf для nginx:

application live-video {
  access_log              /webdata/logs/access/publish.log;
  live                    on;
  record                  all;
  wait_key                on;
  record_path             /webdata/batch/video;
  record_unique           on;
  drop_idle_publisher     2s;
  interleave              on;
  allow play              all;
  allow publish           all;
  notify_method           get;
  exec_push               /usr/bin/ffmpeg -y -re -i rtmp://localhost:1935/live-video/$name -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 320x180 -b:v 256k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/240p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 640x360 -b:v 512k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/360p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 854x480 -b:v 1024k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/480p -c:a libfaac -ac 1 -ar 48000 -b:a 64k -f flv rtmp://localhost:1935/stream-video/aacp;
  access_log              off;
}

application stream-video {
  live                    on;
  access_log              /webdata/logs/access/stream-video.log;
  hls                     on;
  hls_fragment            10s;
  hls_playlist_length     5m;
  hls_path                /webdata/html/live/video;
}

Прямой эфир публикуется на rtmp: // server: 1935 / live-video / stream? Token = TOK; это вызывает ffmpeg для транскодирования на лету в четыре качества и публикует его в приложении "stream-video". Итак, вы публикуете "live-video", а ваши пользователи смотрят "stream-video".

2
hdezela 5 Авг 2016 в 03:47

Обратите внимание, что Nimble Streamer теперь имеет надстройку Transcoder для выполнения описанной задачи: https://wmspanel.com/transcoder

0
Yury 17 Май 2016 в 01:26