使用 gstreamer 重新采样和卸载音频 rtp
Resample and depayload audio rtp using gstreamer
我正在开发一个应用程序,我在其中使用来自管道一端位置的 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 采样在管道输出处获取无头文件。
另外,我现在得到的数据是大端,但我想要小端作为输出。我如何在管道中设置它?
您可能将此与 之一联系起来。
首先,您的管道中有一些奇怪的上限 - 此处的宽度和高度用于视频。他们可能会被忽略……但仍然……不确定那里的其他人也一样,但是嗯……
对于实际问题。只需使用 Gstreamer 的 audioresample
和 audioconvert
元素以您想要的格式传输。
例如
[..] ! rtpL16depay ! audioresample ! audioconvert ! \
audio/x-raw, rate=8000, format=S16LE ! filesink location=Tornado.raw
我正在开发一个应用程序,我在其中使用来自管道一端位置的 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 采样在管道输出处获取无头文件。
另外,我现在得到的数据是大端,但我想要小端作为输出。我如何在管道中设置它?
您可能将此与
首先,您的管道中有一些奇怪的上限 - 此处的宽度和高度用于视频。他们可能会被忽略……但仍然……不确定那里的其他人也一样,但是嗯……
对于实际问题。只需使用 Gstreamer 的 audioresample
和 audioconvert
元素以您想要的格式传输。
例如
[..] ! rtpL16depay ! audioresample ! audioconvert ! \
audio/x-raw, rate=8000, format=S16LE ! filesink location=Tornado.raw