我想通过Gstreamer从MIC流式传输音频数据。 但是我无法用rx播放MIC音频。 如何播放MIC输入的音频流?
tx:gst-launch-1.0 -v alsasrc device =" hw:0" ! decodebin! audioconvert ! rtpL16pay!排队! udpsink host = 239.0.0.1 auto-multicast = true 端口= 5004
rx:gst-launch-1.0 udpsrc multicast-group = 239.0.0.1 port = 5004 帽="应用程序/ x-RTP" ! rtpL16depay! alsasink
rx结果:将管道设置为PAUSED ...管道是实时的 不需要PREROLL ...将管道设置为PLAYING ...新时钟: GstSystemClock错误:来自元素 / GstPipeline:pipeline0 / GstUDPSrc:udpsrc0:内部数据流错误。 其他调试信息: ../../../../gstreamer-1.8.1/libs/gst/base/gstbasesrc.c(2948): gst_base_src_loop():/ GstPipeline:pipeline0 / GstUDPSrc:udpsrc0: 流媒体任务暂停,原因未协商(-4)执行结束 在0:00:00.009364000之后将管道设置为PAUSED ...设置 管道到READY ...将管道设置为NULL ...释放管道 ...
结果如下。
将管道设置为PAUSED ...管道是实时的,不需要 PREROLL ...将管道设置为PLAYING ...新时钟: GstAudioSrcClock / GstPipeline:pipeline0 / GstAlsaSrc:alsasrc0: 实际缓冲时间= 200000 / GstPipeline:pipeline0 / GstAlsaSrc:alsasrc0:actual-latency-time = 10000 /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src:caps = " audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" 重新分配延迟...... /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src:cap =" audio / x-raw \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ format \ =(string)S16BE \,\ channels \ =(int)2 \,\ 通道掩模\ =(位掩码)0x0000000000000003" /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:src:caps = " application / x-rtp \,\ media \ =(string)audio \,\ clock-rate \ =(int)44100 \,\ encoding-name \ =(string)L16 \,\ encoding-params \ =(string)2 \,\ channels \ =(int)2 \,\ payload \ =(int)96 \,\ ssrc \ =(uint)3961155089 \,\ timestamp-offset \ =(uint)725507323 \,\ seqnum-offset \ =(uint)20783" /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src:caps = " application / x-rtp \,\ media \ =(string)audio \,\ clock-rate \ =(int)44100 \,\ encoding-name \ =(string)L16 \,\ encoding-params \ =(string)2 \,\ channels \ =(int)2 \,\ payload \ =(int)96 \,\ ssrc \ =(uint)3961155089 \,\ timestamp-offset \ =(uint)725507323 \,\ seqnum-offset \ =(uint)20783" /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink:caps = " application / x-rtp \,\ media \ =(string)audio \,\ clock-rate \ =(int)44100 \,\ encoding-name \ =(string)L16 \,\ encoding-params \ =(string)2 \,\ channels \ =(int)2 \,\ payload \ =(int)96 \,\ ssrc \ =(uint)3961155089 \,\ timestamp-offset \ =(uint)725507323 \,\ seqnum-offset \ =(uint)20783" /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink:caps = " application / x-rtp \,\ media \ =(string)audio \,\ clock-rate \ =(int)44100 \,\ encoding-name \ =(string)L16 \,\ encoding-params \ =(string)2 \,\ channels \ =(int)2 \,\ payload \ =(int)96 \,\ ssrc \ =(uint)3961155089 \,\ timestamp-offset \ =(uint)725507323 \,\ seqnum-offset \ =(uint)20783" /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:sink:caps = " audio / x-raw \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ format \ =(string)S16BE \,\ channels \ =(int)2 \,\ 通道掩模\ =(位掩码)0x0000000000000003" /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink:cap =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1: caps =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink:cap =" audio / x-raw \,\ format \ =(string)S16LE \,\ layout \ =(string)interleaved \,\ rate \ =(int)44100 \,\ channels \ =(int)2 \,\ channel-mask \ =(bitmask)0x0000000000000003" / GstPipeline:pipeline0 / GstRtpL16Pay:rtpl16pay0:timestamp = 725507323 / GstPipeline:pipeline0 / GstRtpL16Pay:rtpl16pay0:seqnum = 20783
我认为rx管道是错误的,但我找不到解决方案。 请告诉我如何制作管道。
PS: 我尝试了以下命令,并且rx播放麦克风音频!这意味着接收器设备无法播放L16音频?
tx:gst-launch-1.0 -v alsasrc device =" hw:0" ! decodebin! audioconvert !听觉样本! alawenc! rtppcmapay!排队! udpsink host = 239.0.0.1 auto-multicast = true port = 5004
rx:gst-launch-1.0 udpsrc multicast-group = 239.0.0.1 port = 5004 caps =" application / x-rtp,media =(string)audio,clock-rate =(int)8000, encoding-name =(string)PCMA,encoding-params =(string)2, channels =(int)1,payload =(int)8" ! rtppcmadepay! alawdec! alsasink
答案 0 :(得分:0)
您需要在接收中添加上限,请尝试以下管道:
gst-launch-1.0 udpsrc multicast-group = 239.0.0.1 port = 5004 caps ='application / x-rtp,media =(string)audio,clock-rate =(int)44100, encoding-name =(string)L16,encoding-params =(string)2,channels =(int)2, payload =(int)96'! rtpL16depay! audioconvert! alsasink