[英]Resample and depayload audio rtp using gstreamer
我正在開發一個應用程序,其中我在管道一端使用波形文件 ,而在管道另一端使用udpsink 。
gst-launch-1.0 filesrc location=/path/to/wave/file/Tornado.wav ! wavparse ! audioconvert ! audio/x-raw,channels=1,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink host=xxx.xxx.xxx.xxx port=5000
上面的波形文件具有采樣率= 44100 Hz和單通道(單聲道)
在同一台PC上,我正在使用c++
程序應用程序來捕獲這些數據包,並將其卸載到無頭文件的音頻文件中(例如Tornado.raw)
我為此創建的管道基本上是
gst-launch-1.0 udpsrc port=5000 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, width=16, height=16, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, channel-positions=(int)1, payload=(int)96" ! rtpL16depay ! filesink location=Tornado.raw
現在,這工作正常。 我得到了無頭數據,並且當我使用Audacity播放它時,它發揮的很好!
我正在嘗試從44100 Hz到8000 Hz的管道中的音頻文件重新采樣
只是將clock-rate=(int)44100
更改為clock-rate=(int)8000
並沒有幫助(邏輯上也是荒謬的),我正在尋找如何以8000 Hz采樣在流水線輸出處獲取無頭文件。
另外,我現在獲取的數據是Big-endian,但我希望Little-endian作為輸出。 如何在管道中進行設置?
您可能將此與我先前的問題之一相關 。
首先,您的管道中有一些奇怪的上限-寬度和高度用於此處的視頻。 他們可能會被忽略..但仍然..也不確定其他人,但是..
對於實際的問題。 只需使用audioresample
和audioconvert
了GStreamer元素在你想要的格式進行傳輸。
例如
[..] ! rtpL16depay ! audioresample ! audioconvert ! \
audio/x-raw, rate=8000, format=S16LE ! filesink location=Tornado.raw
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.