
ffmpeg+pyhton または他のソリューションと組み合わせてこの問題を解決することは可能ですか。サーバーソリューションが必要なので、Vmix、obs などは適していません。(例: 2 つ (および/またはそれ以上) のストリームがあります
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(このスレッドそしてこのスレッド) そして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