我想了解如何spydroid(https://code.google.com/p/spydroid-ipcamera/)的作品,所以我可以爲我的手機寫一個類似的應用程序。基於spydroid,這是我對RTSP,RTCP和RTP的理解。RTSP,RTCP和RTP端口號
RTSP在指定的端口上運行並設置所有內容。
RTCP可以在任何端口上運行。有一個客戶端端口和一個服務器端口。這是RTP的控制流程
RTP可以在任何端口上運行。有一個客戶端端口和一個服務器端口。這包含音頻和視頻流。這是令人困惑的,因爲它似乎並不實際發送此端口上的音頻和視頻。它在子站點發送端口5006上的視頻和5004上的音頻。
Spydroid通過RTSP發送此消息以確認端口... 傳輸:RTP/AVP/UDP;單播;目的地= 123.456.789.00; client_port = 65234-65235; server_port = 44580-44581; ssrc = ba98a863; mode = play
我想這是說客戶端(VLC在我的情況下)正在使用UDP監聽65234 RTP和65235 RTCP消息。此外,spydroid正在44580上收聽RTP,44581收聽RTCP。這是正確的嗎?
爲RTSP DESCRIBE的序列中現在,spydroid告訴客戶端M =視頻5006 RTP/AVP 96我認爲這是說,它將通過UDP通過端口5006
來發送視頻做的一切我在上面的句子中說的聲音是正確的?
我真正想知道的是如何將這些信息轉發到正確的端口。客戶端端口由VLC自動分配。我試着運行這個命令...... vlc「rtsp://192.168.1.104:8086」--rtp-client-port = 58866但是VLC似乎忽略它並選擇它自己的端口。所以我已經轉發了端口8086,5004和5006,但我不知道哪個端口要轉發RTP和RTCP連接,因爲它每次都會更改。我可以完成這項工作的唯一方法是將所有端口轉發到我的電腦。 (我有一個Linksys路由器,它有一個DMZ選項)但這是一個不好的解決方案。有人能指導我在正確的方向。
此外,我很高興知道我正在這樣做,因爲我通過互聯網通過外部IP地址發送所有內容。在什麼地方可以在局域網上使用子彈體。