ffmpeg
verarbeitet RTMP-Streaming als Eingabe oder Ausgabe, und es funktioniert gut.Verwenden von FFMPEG zum kontinuierlichen Streamen von Videodateien an einen RTMP-Server
Ich möchte einige Videos (eine dynamische Wiedergabeliste, die von einem Python-Skript verwaltet wird) zu einem RTMP-Server streamen und mache derzeit etwas ganz Einfaches: Videos einzeln mit FFMPEG auf den RTMP-Server streamen verursacht jedes Mal, wenn ein Video endet, einen Verbindungsabbruch, und der Stream ist bereit, wenn das nächste Video beginnt.
Ich möchte diese Videos ohne Verbindungsunterbrechungen kontinuierlich streamen, dann könnte der Stream korrekt angezeigt werden.
Ich benutze diesen Befehl meine Videos nacheinander an den Server
ffmpeg -re -y -i myvideo.mp4 -vcodec libx264 -b:v 600k -r 25 -s 640x360 \
-filter:v yadif -ab 64k -ac 1 -ar 44100 -f flv \
"rtmp://mystreamingserver/app/streamName"
ich viele Tage für einige Workarounds über das Internet sah zu streamen, und ich fand einige Leute reden eine Named Pipe als Eingabe in ffmpeg
, habe ich es versucht und es hat nicht gut funktioniert, da ffmpeg
nicht nur den RTMP-Stream schließt, wenn ein neues Video kommt, sondern schließt sich auch.
Gibt es eine Möglichkeit, dies zu tun? (Streamen eine dynamische Playlist von Videos mit ffmpeg
zu RTMP-Server ohne Verbindung bricht
Die Verwendung einer Named Pipe ist der richtige Weg. Können Sie näher erläutern, wie das für Sie nicht funktioniert hat? – blahdiblah
@blahdiblah Ich benutzte die Named Pipe als Eingabe in ffmpeg, ffmpeg pause und warte auf ein paar Daten aus der Pipe, dann habe ich 'cat video.mp4> fifo' und ffmpeg angefangen zu streamen und nach dem Streamen des Videos zu beenden. Ich denke, ich weiß nicht, wie man die Named Pipe richtig verwendet, wenn ich 'cat video1.mp4 video2.mp4> fifo' ffmpeg zeige den Fehler' stream 4, offset 0x1d83c: Teildatei 'nach dem Streaming das erste Video. Ich weiß, dass ich es falsch mache, ich muss die Videodaten auf angemessene Weise durch die Pipe weitergeben. – KKetch
Es ist mir gelungen, eine statische Playlist mit Videos zu streamen, indem ich für jedes Video eine Pipe verwende (ex vid1.mp4 -> pipe1, vid2.mp4 -> pipe2 usw.). Dann schreibe ich in einen einzigen Stream namens "stream" auf diese Weise "cat pipe1 pipe2 pipe3> stream", und ich benutze die Stream-Pipe als Eingabe in FFMPEG, um meinen Stream zu veröffentlichen, aber da ich nach einer dynamischen Playlist suche ** wie kann ich sende mehr Videos an die "Stream" -Rohre, um den Stream am Leben zu erhalten? ** Ich habe es noch nicht herausgefunden. (Anmerkung, außer für das erste Video musste ich die Metadaten jeder Videodatei mit dem Befehl tail ausschneiden, damit das funktioniert.) – KKetch