ffmpeg - 透過 RTP 使用 vorbis 編解碼器串流音訊

ffmpeg - 透過 RTP 使用 vorbis 編解碼器串流音訊

RTP我正在嘗試使用協定和編解碼器來設定串流音訊Vorbis。從最小的範例開始 - 在同一台機器上使用發送器和接收器產生的單聲道樣本(ffmpeg版本 N-91266-g8c20ea8ee0 的兩個實例):

首先執行 sender,將 SDP 儲存到檔案中:

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"

然後接收者:

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

接收到的資料保存到檔案只是一個舉例,實際上是計劃將其寫入管道或套接字)

ffmpeg但我在接收方收到錯誤:

[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

我錯過了ffmpeg哪些方面的選擇?

答案1

看起來使用-sdp_file參數建立 SDP 檔案無法正常運作,這是發送方的工作命令列,其中使用重定向進程輸出(>字元)建立的 SDP 檔案:

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

產生的 SDP 檔案大小為 4503 位元組(而不是 4095 位元組),configuration=行較大;最後兩者ffmpegffplayer可以使用該 SDP 檔案接收流。

相關內容