2010-03-29 105 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