1

просто держать вещи короткими в начале.

Я транслирую через rtmp с avconv через конфигурацию nginx. Насколько я знаю, перехват этого потока на веб-сайт возможен только через flash. В наше время плохо воспроизводить флэш-файлы через смартфон (iPhone/Android/ что угодно). Я хочу захватить этот поток (входящий как rtmp) и преобразовать его в воспроизводимый файл / поток HTML5. Я знаю о возможности на приборной панели; или HLS на; но это на самом деле не работает безупречно. (Я должен включить CORS, чтобы эта чертова штука заработала, но потом она все еще заикается)

Вот мои настройки:

avconv:

avconv \
-f video4linux2 -input_format mjpeg -r 10 -s hd720 -i /dev/video0 \
-f video4linux2 -input_format mjpeg -r 10 -s 640x480 -i /dev/video1 \
-vf transpose=cclock -filter_complex  \
"[0:v]scale=1280:-1,setpts=PTS-STARTPTS[bg]; \
[1:v]scale=320:-1,transpose=cclock,setpts=PTS-STARTPTS[fg]; \
[bg][fg]overlay=W-w-10:10[out]" \
-map "[out]" -vprofile baseline -vcodec libx264 -preset fast \
-maxrate 3000k -bufsize 6000k -b 500k \
-f flv rtmp://STREAMURL

nginx.conf:

    rtmp {
    server {
            listen 1935;
            chunk_size 4096;

            application webcam {
                    live on;
                    record off;

                    allow publish a.b.c.d;
                    deny publish all;

                    allow play all;

                    #exec /usr/bin/avconv -loglevel verbose -i rtmp://STREAMURL -vcodec libx264 -vprofile baseline /tmp/out.mp4;
    } } }

эта закомментированная строка создает выходной файл, который увеличивается со временем. Это может быть хорошо в некоторой конфигурации, но в текущем потоке 24/7 это не очень хорошее решение, я думаю.

Кто-нибудь получил умную идею или подсказку, как решить мою проблему:- Извлечение потока RTMP, преобразование его в воспроизводимый файл HTML5, который только кэшируется и не сохраняется на жестком диске.

1 ответ1

0

Я бы лично использовал сервер Icecast и передавал его из avconv. Но с другой стороны, я как бы предубежден как сопровождающий Icecast.

Это решит вашу проблему с растущим файлом, поскольку Icecast хранит в памяти только небольшой (настраиваемый) буфер и по умолчанию не записывает файлы. Также обратите внимание, что интервал между ключевыми кадрами должен быть достаточно коротким. Тогда у браузеров не должно быть проблем с привязкой к ближайшему ключевому кадру в исходных данных.

Я бы также использовал WebM, а не h.264, но это мое предпочтение непатентованным кодекам. В случае WebM я бы сохранил соотношение ключевых кадров ниже 1:10-1:15.

Тем не менее, HLS или DASH могут быть альтернативами для изучения. Avconv имеет своего рода режим вывода HLS, но, вероятно, ему нужны некоторые дополнительные сценарии для очистки устаревших фрагментов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .