私は gstreamer を使用しており、主に音楽再生機能をいじっています。
現在、RTP を使用して LAN 経由で mp3 ストリームを送信しようとしていますが、今のところ成功していません。
送信者側では、次のパイプラインを使用します。
gst-launch -v filesrc location=./my_music_file.mp3 ! ffdemux_mp3 ! rtpmpapay ! udpsink ポート=6969 ホスト=192.168.0.200
受信側では、次のパイプラインを使用します。
gst-launch -v udpsrc port=6969 caps="application/x-rtp, media=(string)audio, clock-rate=(int)90000, encoding-name=(string)MPA, payload=(int)96, ssrc=(guint)1951256090、clock-base=(guint)1711290778、seqnum-base=(guint)24773" ! rtpmpadepay ! flmp3dec ! パルスシンク
受信側からの出力は次のとおりであるため、明らかにエラーはありません。
パイプラインを一時停止に設定しています...
パイプラインはライブであり、PREROLL は必要ありません ...
パイプラインを PLAYING に設定しています ...
新しいクロック: GstSystemClock
...しかし、音は奇妙に聞こえます。まるで速く弾きすぎたかのようです。
mp3 ファイルをローカルで再生して、オーディオが機能することをテストしました。また、wav/µLaw ファイルをストリーミングして rtp をテストしました。これはすべてうまくいきます。
他の方法でも問題に直面しようとしました。たとえば、次のパイプラインを使用しました。これは、audiotestsrc/amrnb コーデックでうまく機能します。
gst-launch gstrtpbin name=rtpbin audiotestsrc ! アムンベンク!rtpamrpay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink ホスト=192.168.0.200 ポート=5002 rtpbin.send_rtcp_src_0 ! udpsink port=5003 host=192.168.0.200 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_1
しかし、ラメで同じパイプラインを使用すると、受信側でもエラーは発生しませんが、「速すぎる」出力があります。
送信者: gst-launch gstrtpbin name=rtpbin audiotestsrc ! lamemp3enc ! rtpmpapay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink ホスト=192.168.0.200 ポート=5002 rtpbin.send_rtcp_src_0 ! udpsink port=5003 host=192.168.0.200 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_1
受信者: gst-launch -v udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)90000, encoding-name=(string)MPA, payload=(int) 96" ! rtpmpadepay ! flmp3dec ! パルスシンク
私のパイプラインの何が問題なのか、誰にもわかりませんか?
ご支援ありがとうございました、
ホルヘ