
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_1
input_stream_2
input_stream_2
input_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