ffmpeg stoppt das Streaming, wenn ein Eingang stoppt

ffmpeg stoppt das Streaming, wenn ein Eingang stoppt

Ich versuche, einen MPEG-TS-Stream zu erstellen, bei dem das Video ein Screenshot von Xvfb und der Ton von einem Internetradio (MP3- oder AAC-Stream) ist. Das funktioniert einigermaßen gut, aber wenn es ein Problem mit dem Internetradio gibt, stoppt die gesamte Ausgabe, nicht nur der Ton, und wird erst fortgesetzt, wenn ich ffmpeg beende und neu starte.

Hier ist die Befehlszeile, die ich verwende

DISPLAY=:1 ffmpeg -re -video_size 768x576 -framerate 50 -f x11grab -i :1 -i http://internet-radio/mp3 -c:v mpeg2video -b:v 6000k -minrate 6000k -maxrate 6000k -bufsize 3000k -dc 10 -top 0 -f mpegts -c:a mp2 -ac 2 -b:a 192k -flags +ilme+ildct -vf "tinterlace=interleave_top" udp://192.168.0.1:1234?pkt_size=1316

Gibt es eine Möglichkeit, entweder ein Abwürgen zu verhindern (einfach Stille erzeugen, bis die Audioeingabe wiederhergestellt ist) oder zumindest festzustellen, dass ein Fehler aufgetreten ist, damit ich ein Skript zum Neustarten schreiben kann?

Antwort1

Versuchen Sie es mit demein PolsterAudiofilter, um den Stream mit unbestimmter Stille zu verlängern. Sie sollten in der Lage sein, entweder einen-afBefehl zu Ihrer vorhandenen Zeichenfolge ...

-vf "[0]tinterlace=interleave_top" -af "[1]apad"

...oder ändern Sie Ihre bestehende-vfZeichenfolge zu-filter_complexum sowohl die Audio- als auch die Videofilterbefehle zu verarbeiten ...

-filter_complex "[0]tinterlace=interleave_top;[1]apad"

Beachten Sie, dass die Eingabestream-Spezifizierer ("[0]" für den x11grab und "[1]" für den Audiostream)sollte seinoptional, aber einige ältere Versionen von FFmpeg können sich selbst verwirren, wenn sie nicht angegeben sind.

Wenn keine der Filtereinstellungen so funktioniert, wie sie ist, müssen Sie möglicherweise die-kürzesteFlag auch in Ihre allgemeinen Ausgabeparameter (nicht als Teil der Filterzeichenfolge, wohlgemerkt), zB:

-filter_complex "[0]tinterlace=interleave_top;[1]apad" -shortest

verwandte Informationen