GStreamer:将audio/mpeg转换为audio/x-raw需使用哪些元素?
能将audio/mpeg转换为audio/x-raw的GStreamer元素
针对你的需求(从MPEG/TS流提取音频并保存为WAV),以下几个GStreamer元素可以完成audio/mpeg到audio/x-raw的转换:
- mad:一款轻量高效的MPEG音频解码器,支持解码MP1、MP2和MP3格式,输出原始PCM音频(
audio/x-raw)。它是GStreamer基础插件包的一部分,通常默认安装。 - mpg123dec:基于mpg123库的解码器,功能和mad类似,同样支持MPEG音频解码到raw格式,兼容性也不错。
- avdec_mp2:属于
gstreamer-libav插件(封装FFmpeg解码器),专门针对MP2格式的解码,如果你已经安装了libav相关插件,这个元素也能胜任。
修改后的完整管道示例
结合你现有的命令,我们可以添加解码器和WAV编码元素,直接将TS流中的音频保存为WAV文件:
gst-launch-1.0 udpsrc port=1235 caps="application/x-rtp" ! rtpjitterbuffer ! rtpmp2tdepay ! tsdemux program-number=4352 ! mpegaudioparse ! queue ! mad ! audioconvert ! audioresample ! wavenc ! filesink location=audio.wav
关键新增部分解释:
mad:负责将audio/mpeg格式的MP2音频解码为audio/x-raw的PCM数据。audioconvert:确保音频格式、通道数等参数符合后续编码的要求,是GStreamer管道中处理音频时常用的适配元素。audioresample:如果需要调整采样率,这个元素会自动处理,保证输出到wavenc的音频参数正确。wavenc:将原始PCM音频编码为WAV格式。
你也可以把mad替换成mpg123dec或avdec_mp2,效果基本一致,比如:
gst-launch-1.0 udpsrc port=1235 caps="application/x-rtp" ! rtpjitterbuffer ! rtpmp2tdepay ! tsdemux program-number=4352 ! mpegaudioparse ! queue ! mpg123dec ! audioconvert ! audioresample ! wavenc ! filesink location=audio.wav
内容的提问来源于stack exchange,提问作者Bruce Adams
相关产品推荐
相关产品推荐

