ffmpeg – Audio-Streaming mit Vorbis-Codec über RTP

ffmpeg – Audio-Streaming mit Vorbis-Codec über RTP

RTPIch versuche, Streaming-Audio mithilfe von Protokoll und Codec einzurichten Vorbis. Beginnen wir mit einem Minimalbeispiel – generierte Mono-Samples mit Sender und Empfänger auf derselben Maschine (zwei Instanzen von ffmpeg, Version N-91266-g8c20ea8ee0):

Zuerst Sender ausführen, SDP in Datei speichern:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -acodec libvorbis -f rtp rtp://127.0.0.1:1234 -sdp_file "g:\sinwave.sdp"

Dann Empfänger:

ffmpeg -protocol_whitelist "file,udp,rtp" -i "g:\sinwave.sdp" -v debug "g:\1.ogg"

Die empfangenen Daten werden nur als Beispiel in einer Datei gespeichert. Eigentlich ist geplant, sie in eine Pipe oder einen Socket zu schreiben.)

Aber ich erhalte ffmpegFehlermeldungen auf der Empfängerseite:

[sdp @ 0000000000573580] Bad packed header lengths (30,0,2923,3219)
[vorbis @ 0000000000587940] Extradata missing.
Error while opening decoder for input stream #0:0 : Invalid data found when processing input

Welche Optionen habe ich ffmpegauf einer der Seiten übersehen?

Antwort1

Das Erstellen der SDP-Datei mit -sdp_fileParametern funktioniert anscheinend nicht richtig. Hier ist die funktionierende Befehlszeile für den Absender, in der die SDP-Datei mit der Umleitung der Prozessausgabe ( >Zeichen) erstellt wurde:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -acodec libvorbis
-f rtp rtp://127.0.0.1:1234 > "g:\sinwave.sdp"

Die resultierende SDP-Datei hat eine Größe von 4503 Byte (anstelle von 4095 Byte) mit größerer configuration=Zeile; schließlich können beide ffmpegmithilfe ffplayerdieser SDP-Datei einen Stream empfangen.

verwandte Informationen