
Ist es möglich, dieses Problem mit ffmpeg+pyhton oder in Verbindung mit einer anderen Lösung zu lösen? Ich brauche eine Serverlösung, daher sind Vmix, obs usw. nicht geeignet. (Beispiel: Ich habe zwei (und/oder mehr) Streams
rtmp://host/live/input_stream_1
rtmp://host address/live/input_stream_2
ect
Ist es möglich, das „Routing“ von Streams zu organisieren (einen vorrangigen Live-Video-Stream auszuwählen und ihm Ebenen gemäß der folgenden Logik zuzuweisen):
Es gibt input_stream_1
- es ist standardmäßig und lokal - Videos werden aus einem Netzwerkordner per ffmpeg gepackt und eingeflogen rtmp://host address/live/output_stream_1A
(+ Overlay-Ebenen - Logos usw.).
Wenn ein eingehender Stream input_stream_2
erscheint, muss der Inhalt von input_stream_1
durch den Inhalt von ersetzt input_stream_2
und gesendet werden. Wenn input_stream_2
er stoppt, soll dann zurückgekehrt werden input_stream_1
?
Vielleicht wird es eine Kombination aus ffmpeg sein (wie vorgeschlagen indieser Threadund indieser Thread) UndPython-Lösungen.
Die Logik der Ebenen könnte wie folgt aussehen:Bild
Antwort1
import subprocess
Festlegen der Eingabe- und Ausgabestreams
Eingabestream_1 = "rtmp://host/live/Eingabestream_1" Eingabestream_2 = "rtmp://host/live/Eingabestream_2" Ausgabestream = "rtmp://host/live/Ausgabestream"
Festlegen des Standardeingabestreams
aktueller_Eingabestream = Eingabestream_1
Legen Sie die Overlay-Ebenen fest, die auf den Stream angewendet werden sollen
overlay_layers = "-i logo.png -filter_complex overlay"
Verwenden Sie eine While-Schleife, um die Streams kontinuierlich zu lesen und weiterzuleiten
while True: # Verwenden Sie FFmpeg, um den aktuellen Eingabestream zu lesen und den Ausgabestream zu schreiben 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