@nemurenai_yuki

Реализация непрерывного потока ffmpeg + rtmp + nginx с циклическим воспроизведением, автоматическими переходами. Что я делаю не так?

То, к чему нужно прийти:
Реализовать непрерывную потоковую трансляцию ffmpeg, которая будет брать ролики из папки и крутить их по кругу. Важно, чтобы задержка была минимальной, переходы между разными видео в одном потоке были автоматическими.
Какая возникла проблема:
Я могу поймать rtmp поток через VLC, но очень плохо работают переходы, высокая задержка (кадры обрабатываются, но VLC ловит поток только через секунд 10-20, а иногда и вообще зависает). Мягко сказать, трансляция работает криво.

Мои конфиги:

1. Скрипт для запуска ffmpeg + генерация потока в rmtp:
cd /root/cnv_video
while [ true ]; do
for video in $( ls -1 --hide=`ls -d` ); do
while [ `fuser $video` ]; do
sleep 10
done
/usr/bin/ffmpeg -re -i $video -acodec copy -vcodec copy -tune zerolatency -strict experimental -f flv rtmp://x.x.x.x/live/stream
done
done


2. Ветка rtmp в nginx:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
}
}
}


P.S.: Это всё нужно для того, чтобы крутить 24/7 ролики в мед. учреждении на нескольких Raspberry Pi, подключенных к телевизорам.
Буду благодарен, если кто-то укажет на мои ошибки и подскажет, куда мне копать и в чём я ошибся, а, может быть, даже поможет другим конфигом.
  • Вопрос задан
  • 346 просмотров
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Ваши файлы скорее всего пожаты двухпроходным алгоритмом, который поставил I-кадры (гуглите, что это такое) слишком редко.

Воспроизведение трансляции можно начать только с I-кадра, так что плееру приходится ждать, пока такой кадр к нему придет.

Так как у вас статический контент, вам вообще никакой RTMP стриминг не нужен - перегоните ваши файлы в формат mp4 и встраивайте их в браузер при помощи тега , без всякого флеша.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы