Трансляция видео с нескольких камер HTML5, MPEG-DASH

347 views
Skip to first unread message

Sergey Viktorov

unread,
Oct 18, 2017, 9:48:02 AM10/18/17
to nginx-rtmp-ru
Добрый день!

Существует задача организации трансляции видео с нескольких камер (набор url, поток h264).
Клиент должен перейти браузером по некоторому url (задав в параметрах id камеры, id профиля??) и получить видео с указанной камеры.
Если несколько клиентов смотрят одну камеру, то используется один instance ffmpeg, если все клиенты отключаются все потоки ffmpeg должны останавливаться.
Таким образом количество ffmpeg транскодеров должно равняться количеству различных просматриваемых одновременно камер.
Использую плеер dash.js и openresty (для возможности использовать LUA)
В случае одной камеры все работает:

rtmp {
    dash on;
    server {
        listen 1935;

        application cams {
        live on;
        dash_path /tmp/cams;

        exec_static ffmpeg -i rtsp://172.1.0.15:5540/media/1/video=1&stream=1&audio=1 -vcodec copy -f flv -s 1920x1080 -an rtmp://127.0.0.1/cams/stream;
        }
    }
}

Проблема в том, что ffmpeg живет постоянно.
Если использовать exec_pull или exec, то ffmpeg не поднимается.

Вопрос, как построить архитектуру, основы настроек и можно ли решить данную задачу связкой openresty + rtmp-module + lua + dash.js

Спасибо!

С уважением.

Виталий Серёгин

unread,
Oct 18, 2017, 8:11:44 PM10/18/17
to nginx-rtmp-ru
Если у вас hls, то никак. Несколько раз обсуждалось, что статической раздачей файлов занимаются стандартные компоненты nginx без rtmp модуля.
Поэтому для динамических подключений только использование rtmp.

Sergey Viktorov

unread,
Oct 19, 2017, 6:17:34 AM10/19/17
to nginx-rtmp-ru
не hls, думаю использовать dash, без rtmp не обойтись, конечно.
Насколько я понял разница между hls и dash в формате временных файлов, но у hls хуже поддержка.
Похоже придется руками парсить клиентские запросы и запускать самому ffmpeg, отслеживая активность клиентов.


четверг, 19 октября 2017 г., 3:11:44 UTC+3 пользователь Виталий Серёгин написал:
Reply all
Reply to author
Forward
0 new messages