@psypride
IT специалист

Возможно ли реализовать картинку в картинке (ffmpeg \ rtmp потоки) только при активности второго потока?

Условия:
1. Транслируется основной rtmp поток (на нём наложен текст и графика через drawtext и watermark через filter_complex)
2. Когда поднимается второй rtmp поток он встраивается в первый как PIP (без рестарта ffmpeg)
3. Во втором потоке тоже есть drawtext (без watermark)
4. Когда опускается второй поток PIP из первого пропадает

Через рестарт ffmpeg делать получается, а вот без разрывов никак.
Может у кого есть идеи по реализации или готовый алгоритм?
  • Вопрос задан
  • 344 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexdora
Топ-менеджер
Если реализовано через NGINX, то через использование stub статистики. У нас задача была другая, заглушку поставить в случае обвала потока с камеры. Но вам тоже подойдет.

[LIVE] rtmp://*/live - Вещание
[CAM1] rtmp://*/cam1 - Камера основная << cam >> ffmpeg >> /live
[CAM2] rtmp://*/cam2 - Камера вторая << cam2 >> ffmpeg >> [ожидание]
[PIP] rtmp://*/pip - Где делается сплит >> ffmpeg cam1 + cam2 >> /live


Вот как оно в вашем случае на словах будет:
Скрипт каждую секунду проверяет на stub наличие и скорость потока cam2. При появлении потока и скорости делается kill процесса ffmpeg [CAM1] и запускается [PIP]
Другого способа пока не нашли, в живую выглядит резкое смена изображения. У нас заглушка, поэтому есть промежуточная точка на ffmpeg pull. Но в вашей задаче она не нужна.
Ответ написан
Комментировать
@psypride Автор вопроса
IT специалист
Интересное решение, но у меня 10 потоков, встраивание которых друг в друга может варироваться в любом виде.
Пришел к решению аналогично вашему, только через python/screen/ffmpeg, спасибо.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы