我正在使用gstreamer,主要是播放音乐播放功能。
我目前正在尝试使用RTP通过LAN发送mp3流,但直到现在都没有成功。
在发件人方面,我使用以下管道:
gst-launch -v filesrc location =。/ my_music_file.mp3! ffdemux_mp3! rtpmpapay! udpsink port = 6969 host = 192.168.0.200
在接收方,我使用以下管道:
gst-launch -v udpsrc port = 6969 caps =“application / x-rtp,media =(string)audio,clock-rate =(int)90000,encoding-name =(string)MPA,payload =(int )96,ssrc =(guint)1951256090,clock-base =(guint)1711290778,seqnum-base =(guint)24773“! rtpmpadepay! flump3dec! pulsesink
接收方的输出显然没有错误:
将管道设置为PAUSED ...
管道已上线,不需要PREROLL ......
将管道设置为PLAYING ...
新时钟:GstSystemClock
......但声音听起来很奇怪,就好像它播放得太快了。
我已经通过在本地播放mp3文件测试了音频的工作原理。我还通过流式传输wav /μLaw文件测试了rtp。这一切都运作良好。
我也试过以其他方式面对问题,例如,我使用了以下管道,taht与audiotestsrc / amrnb编解码器配合得很好:
gst-launch gstrtpbin name = rtpbin audiotestsrc! amrnbenc! rtpamrpay! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0! udpsink host = 192.168.0.200 port = 5002 rtpbin.send_rtcp_src_0! udpsink port = 5003 host = 192.168.0.200 sync = false async = false udpsrc port = 5005! rtpbin.recv_rtcp_sink_1
但是当使用相同的管道和lame时,再次在接收器端没有错误但是输出“太快”:
发信人: gst-launch gstrtpbin name = rtpbin audiotestsrc! lamemp3enc! rtpmpapay! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0! udpsink host = 192.168.0.200 port = 5002 rtpbin.send_rtcp_src_0! udpsink port = 5003 host = 192.168.0.200 sync = false async = false udpsrc port = 5005! rtpbin.recv_rtcp_sink_1
接收机: gst-launch -v udpsrc port = 5002 caps =“application / x-rtp,media =(string)audio,clock-rate =(int)90000,encoding-name =(string)MPA,payload =(int)96” ! rtpmpadepay! flump3dec! pulsesink
有人可以知道我的管道出了什么问题吗?
非常感谢您的支持,
豪尔赫
答案 0 :(得分:1)
对于那些对此主题感兴趣的人,我对问题有部分答案。
在fatc中,它是fluendo解码器,它丢失了来自rtp depay的优秀mp3帧。
当我使用疯狂的解码器时,我可以接收和听到所有的流。
以下是我用来通过RTP进行mp3流媒体的管道:
发信人: gst-launch -v filesrc location =。/ my_file.mp3! ffdemux_mp3! rtpmpapay! udpsink port = 6969 host = 192.168.0.200
接收机: gst-launch -v udpsrc port = 6969 caps =“application / x-rtp,media =(string)audio,clock-rate =(int)90000,encoding-name =(string)MPA,payload =(int)96” ! rtpmpadepay!疯了! pulsesink
问题已发布到fluendo团队。
希望得到这个帮助。