2012-12-20 74 views
0

我有點困惑,希望你能幫助我。我在Android上編寫rtsp服務器。我遇到了一些問題,但有一些方法可以解決所有問題,除了一個問題。發送與RTSP相同的端口上的RTP包

描述: 我有一個應用程序由3個模塊RTSP,RTP和UI組成。 跳過UI的描述。 RTSP開始監聽tcp端口55555.然後在VLC I中輸入rtsp://地址:55555 然後是握手和頭部的所有RTSP共享。 Durung共享頭文件程序集通過RTP和Android應用程序設置接收和設置端口開始發送一些字節,但...

這裏是問題: VLC中沒有任何圖像。所以我看着日誌和:

main debug: resyncing on rtsp://192.168.1.143:55555 
main debug: rtsp://192.168.1.143:55555 is at 2 
main debug: starting playback of the new playlist item 
main debug: resyncing on rtsp://192.168.1.143:55555 
main debug: rtsp://192.168.1.143:55555 is at 2 
main debug: creating new input thread 
main debug: Creating an input for 'rtsp://192.168.1.143:55555' 
main debug: using timeshift granularity of 50 MiB, in path 'D:\Users\Adrian\AppData\Local\Temp' 
main debug: `rtsp://192.168.1.143:55555' gives access `rtsp' demux `' path `192.168.1.143:55555' 
main debug: creating demux: access='rtsp' demux='' location='192.168.1.143:55555' file='\\192.168.1.143:55555' 
main debug: looking for access_demux module: 1 candidate 
live555 debug: version 2012.09.13 
qt4 debug: IM: Setting an input 
live555 debug: RTP subsession 'video/JPEG' 
main debug: selecting program id=0 
live555 debug: setup start: 0.000000 stop:100.000000 
live555 debug: We have a timeout of 600 seconds 
live555 debug: spawned timeout thread 
live555 debug: play start: 0.000000 stop:100.000000 
main debug: using access_demux module "live555" 
main debug: TIMER module_need() : 155.608 ms - Total 155.608 ms/1 intvls (Avg 155.608 ms) 
main debug: looking for decoder module: 32 candidates 
avcodec debug: libavcodec already initialized 
avcodec debug: trying to use direct rendering 
avcodec debug: allowing 4 thread(s) for decoding 
avcodec debug: ffmpeg codec (Motion JPEG Video) started 
main debug: using decoder module "avcodec" 
main debug: TIMER module_need() : 1.511 ms - Total 1.511 ms/1 intvls (Avg 1.511 ms) 
main debug: looking for meta reader module: 2 candidates 
lua debug: Trying Lua scripts in D:\Users\Adrian\AppData\Roaming\vlc\lua\meta\reader 
lua debug: Trying Lua scripts in E:\VideoLAN\VLC\lua\meta\reader 
lua debug: Trying Lua playlist script E:\VideoLAN\VLC\lua\meta\reader\filename.luac 
main debug: no meta reader module matching "any" could be loaded 
main debug: TIMER module_need() : 1.981 ms - Total 1.981 ms/1 intvls (Avg 1.981 ms) 
main debug: `rtsp://192.168.1.143:55555' successfully opened 
live555 warning: no data received in 10s. Switching to TCP 
main debug: removing module "avcodec" 
avcodec debug: ffmpeg codec (Motion JPEG Video) stopped 
main debug: killing decoder fourcc `MJPG', 0 PES in FIFO 
main debug: Program doesn't contain anymore ES 
live555 debug: RTP subsession 'video/JPEG' 
main debug: looking for decoder module: 32 candidates 
avcodec debug: libavcodec already initialized 
avcodec debug: trying to use direct rendering 
avcodec debug: allowing 4 thread(s) for decoding 
avcodec debug: ffmpeg codec (Motion JPEG Video) started 
main debug: using decoder module "avcodec" 
main debug: TIMER module_need() : 1.352 ms - Total 1.352 ms/1 intvls (Avg 1.352 ms) 
live555 debug: setup start: 0.000000 stop:100.000000 
live555 debug: play start: 0.000000 stop:100.000000 
live555 error: no data received in 10s, aborting 
main debug: EOF reached 
main debug: finished input 
main debug: removing module "avcodec" 
avcodec debug: ffmpeg codec (Motion JPEG Video) stopped 
main debug: killing decoder fourcc `MJPG', 0 PES in FIFO 
main debug: removing module "live555" 
main debug: Program doesn't contain anymore ES 
main debug: dead input 
main debug: changing item without a request (current 2/3) 
main debug: nothing to play 
qt4 debug: IM: Deleting the input 
main debug: TIMER input launching for 'rtsp://192.168.1.143:55555' : 161.112 ms - Total 161.112 ms/1 intvls (Avg 161.112 ms) 
qt4 debug: Small 
qt4 debug: Saving the simple preferences 
main debug: opening config file (D:\Users\Adrian\AppData\Roaming\vlc\vlcrc) 

而我的問題:我必須發送與RTSP相同的端口上的流嗎?我依靠你的幫助,因爲有很多代碼需要改變。

請原諒我的英語。

+0

RTP和RTSP端口可以而且必須是不同的,沒有錯。你如何發送/接收流?請粘貼一些代碼。 – 1615903

+0

「live555警告:10秒內沒有收到數據。切換到TCP」這一行是日誌,告訴UDP數據沒有被vlc接收。你可以檢查UDP端口是否打開。還要檢查服務器生成的SDP響應,SDP中的端口應與傳輸數據的端口相同。 – rajneesh

+0

通過RTSP協商我的服務器和vlc客戶端設置trasport端口和服務器端口,所以我認爲vlc端口是開放的。連接設置在我的局域網中,並且沒有防火牆問題。 另一方面,我發送SDP作爲內容。我認爲這是正確的,因爲最終建立連接。你能告訴我我到底需要投入SDP內容嗎? – adrian

回答

0

流式視頻沒有通過udp到達VLC。 這就是爲什麼超時10秒後,它嘗試回退並通過tcp接收媒體。 你可以看看rtp/rtsp/tcp。這是一種協議,允許在rtsp的相同套接字上發送rtp數據包。

+0

是的,那麼告訴我爲什麼我需要協商端口和類型(udp/tcp)的發送數據連接時,數據將發送在同一(當前)連接呢? – adrian