使用GSTREAMER重新采样和Depayload Audio RTP

Resample and depayload audio rtp using gstreamer

本文关键字:Depayload Audio RTP 采样 GSTREAMER 新采样 使用      更新时间:2023-10-16

我正在开发一个应用程序,其中我正在使用 wave文件从管道的一端和的位置上 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和单渠道(Mono)

在同一个人PC上,我正在使用c++程序应用程序捕获这些数据包 depayload 到无标题音频文件(例如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采样来获取管道输出的无标题文件。

我现在得到的数据也是大型的,但我希望小居民作为输出。我该如何在管道中设置?

您可以将其与我先前的问题之一相关联。

首先,您的管道中有一些怪异的帽子 - 宽度和高度在这里进行视频。他们可能会被忽略..但仍然不确定。

对于实际问题。只需使用 audioresampleaudioconvert gstreamer的元素以您所需的格式传输。

,例如

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