Resample and depayload audio rtp using gstreamer

徘徊边缘 提交于 2020-01-16 08:39:08

问题


I am developing an application where I am using a wave file from a location at one end of a pipeline and udpsink at the other end of it.

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

The Above wave file is having sampling rate = 44100 Hz and single-channel(mono)

On the same PC I am using a c++ program application to catch these packets and depayload to a headerless audio file (say Tornado.raw)

The pipeline I am creating for this is basically

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

Now This works fine. I get the headerless data and when I play it using the Audacity It plays great!

I am trying to resample this audio file while it is in pipeline from 44100 Hz to 8000 Hz

Simply changing the clock-rate=(int)44100 to clock-rate=(int)8000 is not helping (also absurd logically) I am looking for how to get the headerless file at the pipeline output with 8000 Hz sampling.

Also the data that I am getting now is Big-endian, but I want Little-endian as output. how do I set that in the pipeline?

You might relate this to one of my earlier question.


回答1:


First, you have some weird caps in your pipeline - width and height are for video here. They probably will be just ignored.. but still.. not sure on others there as well but meh..

For the actual question. Just use audioresample and audioconvert elements of Gstreamer to transfer in your desired format.

E.g.

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


来源:https://stackoverflow.com/questions/54669358/resample-and-depayload-audio-rtp-using-gstreamer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!