Установите входные и выходные потоки

Установите входные и выходные потоки

Можно ли решить эту проблему с помощью ffmpeg+pyhton или в сочетании с другим решением. Мне нужно серверное решение, поэтому Vmix, obs и т. д. не подходят. (например: у меня два (и/или больше) потока

rtmp://host/live/input_stream_1
rtmp://host address/live/input_stream_2
 ect

Можно ли организовать «маршрутизацию» потоков (выбор приоритетного live-video-потока и наложение на них слоев согласно логике:

Есть input_stream_1- он дефолтный и локальный - видео из сетевой папки упаковываются через ffmpeg и летят в rtmp://host address/live/output_stream_1A(+накладываются слои -и т.д. логотипы).

Необходимо при input_stream_2появлении входящего потока заменить содержимое на input_stream_1содержимое input_stream_2и отправить его, а при input_stream_2остановке — вернуть input_stream_1?

Возможно, это будет комбинация ffmpeg (как предложено вэта темаИ вэта тема) ирешения на Python.

Логика слоев может быть такой:ПИК

решение1

import subprocess

Установите входные и выходные потоки

input_stream_1 = "rtmp://host/live/input_stream_1" input_stream_2 = "rtmp://host/live/input_stream_2" output_stream = "rtmp://host/live/output_stream"

Установить входной поток по умолчанию

текущий_входной_поток = входной_поток_1

Установите слои наложения, которые будут применяться к потоку

overlay_layers = "-i logo.png -filter_complex наложение"

Используйте цикл while для непрерывного чтения и маршрутизации потоков

while True: # Использовать FFmpeg для чтения текущего входного потока и записи выходного потока ffmpeg_command = f"ffmpeg -i {current_input_stream} {overlay_layers} -c copy {output_stream}" subprocess.run(ffmpeg_command, shell=True)

# Check for incoming streams and switch to them if necessary
if incoming_stream_2_is_active():
    current_input_stream = input_stream_2
else:
    current_input_stream = input_stream_1

Связанный контент