2010-03-29 102 views

回答

1

尝试RTP文件流导出到转储文件(在Wireshark的,用鼠标右键单击一个RTP包→按照UDP流→另存为),然后通过gst-launch发送文件进行解复用。你需要玩弄这个有点,但是这应该是个好主意:

$ gst-launch-0.10 filesrc location=dump.rtp ! rtpmp2tdepay ! filesink location=dump.ts 

以上是假设RTP是MPEG TS流。如果是别的东西(例如原始的Vorbis,G.729,PCM,MP3或其他),那么您需要使用不同的'depayloader'。您可以使用gst-inspect发现了这一点:

$ gst-inspect-0.10 | egrep 'rtp.*depay' 
quicktime: rtpxqtdepay: RTP packet depayloader 
dtmf: rtpdtmfdepay: RTP DTMF packet depayloader 
rtp: rtpdepay: Dummy RTP session manager 
rtp: rtpac3depay: RTP AC3 depayloader 
rtp: rtpbvdepay: RTP BroadcomVoice depayloader 
rtp: rtpceltdepay: RTP CELT depayloader 
[...] 

的GStreamer(包括gst-launchgst-inspect工具)应与所有现代的Linux发行版在默认情况下被运。如果不是,它应该相当容易安装。很明显,我的例子非常通用,所以你需要使用我的建议来自己找到确切的答案。希望我已经给了你足够的支持,让你做到这一点。 :)

+0

我刚试过这个......每次我运行它,就像你解释的一样,使用Wireshark的Follow UDP Stream ...我得到一个错误“没有RTP格式被协商”。有任何想法吗? – 2011-05-13 14:08:40

+0

因此,为什么我说“你需要玩一下这个”。你没有共享任何有关你的流的细节(例如Wireshark识别的RTP有效载荷类型),所以我不能告诉你你需要的确切的gst流水线。 – 2011-05-15 14:01:55