簡體   English   中英

使用gstreamer對音頻rtp進行重采樣和取消負載

[英]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作為輸出。 如何在管道中進行設置?

您可能將此與我先前的問題之一相關

首先,您的管道中有一些奇怪的上限-寬度和高度用於此處的視頻。 他們可能會被忽略..但仍然..也不確定其他人,但是..

對於實際的問題。 只需使用audioresampleaudioconvert了GStreamer元素在你想要的格式進行傳輸。

例如

[..] ! rtpL16depay ! audioresample ! audioconvert ! \
audio/x-raw, rate=8000, format=S16LE ! filesink location=Tornado.raw

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM