입력 및 출력 스트림 설정

입력 및 출력 스트림 설정

ffmpeg+pyhton을 사용하거나 다른 솔루션과 함께 이 문제를 해결할 수 있습니까? 서버 솔루션이 필요해서 Vmix, obs 등은 적합하지 않습니다. ( 예: 두 개 이상의 스트림이 있습니다.

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

스트림의 "라우팅"을 구성하는 것이 가능합니까(우선순위 라이브 비디오 스트림을 선택하고 논리에 따라 레이어를 적용함:

기본이고 로컬 입니다 input_stream_1. 네트워크 폴더의 비디오는 ffmpeg를 통해 압축되어 rtmp://host address/live/output_stream_1A(+ 오버레이 레이어 - 로고 등)로 이동합니다.

들어오는 스트림이 나타나면 의 내용을 의 내용으로 input_stream_2바꿔서 보내야 하며, 중지되면 ?input_stream_1input_stream_2input_stream_2input_stream_1

어쩌면 ffmpeg의 조합이 될 수도 있습니다(에서 제안한 대로).이 스레드그리고이 스레드) 그리고파이썬 솔루션.

레이어의 논리는 다음과 같습니다.사진

답변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"

기본 입력 스트림 설정

current_input_stream = input_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

관련 정보