【发布时间】:2019-07-07 05:42:14
【问题描述】:
我正在开发一个应用程序,我在其中使用来自管道一端位置的 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 和单通道(单声道)
在同一台 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 采样在管道输出处获取无头文件。
我现在得到的数据也是大端的,但我想要小端作为输出。如何在管道中进行设置?
您可能会将其与my earlier question 之一联系起来。
【问题讨论】:
-
从
44100重新采样到8000Hz 将导致44100/8000的采样次数减少(四舍五入为整数),但您首先需要将信号(或部分信号)通过低通过滤波器去除高频分量(否则会出现混叠)
标签: c++ audio gstreamer pipeline resampling