是否可以使用 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
(+ 覆盖层 -ect 徽标)。
当出现传入流时,有必要将input_stream_2
的内容替换为 的input_stream_1
内容input_stream_2
并发送,当input_stream_2
停止时,是否返回input_stream_1
?
也许它将是 ffmpeg 的组合(如建议的那样此主题以及此主题) 和python 解决方案。
各层的逻辑可能是这样的:PIC
答案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 overlay”
使用 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