
RTP
プロトコルとコーデックを使用してストリーミング オーディオを設定しようとしていますVorbis
。最小限の例から始めます - 送信者と受信者が同じマシンでモノラル サンプルを生成します (の 2 つのインスタンスffmpeg
、バージョン N-91266-g8c20ea8ee0):
最初に送信側を実行し、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 ファイルを作成すると-sdp_file
正しく機能しないようです。以下は送信側の機能するコマンド ラインです。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=
。最終的に、両方ffmpeg
がffplayer
その SDP ファイルを使用してストリームを受信できるようになります。