如上圖所示,有一個Android設備,Android設備里面有主板,主板上有網絡接口和Wi-Fi,網絡接口通過網線連接了一個網絡攝像頭,這就跟電腦一樣,電腦即可以通過網線接入一個網絡,也可以同時用Wi-Fi接入另一個網絡,這種情況下就會同時存在兩個網絡。假設我的Android設備連接了公司的Wi-Fi,分配到的ip是192.168.1.100,而我的電腦也連接了公司Wi-Fi,分配到的ip是192.168.1.101,此時我的電腦和Android設備都是同一樣網段,所以我的電腦可以訪問Android設備上Wi-Fi的ip,而Android設備上還有一個網絡攝像頭,它是通過網線和Android主板直接連接的,ip為192.168.2.100,這和我的電腦不是同一個網段,所以我的電腦無法通過192.168.2.100進行訪問,這時就需要進行端口轉發,比如網絡攝像頭的拉流地址為:rtsp://192.168.2.100:554/stream_1,這里的端口為554,則我們可以在Android中運行一個應用,讓這個應用監聽554端口,然后把554端口的請求轉發給192.168.2.100:554。對于這樣的需求,已經有開源的應用:https://gitee.com/daizhufei/FwdPortForwardingApp,這是我從Github上克隆的,所以大家也可以去Github上找官方的,搜索FwdPortForwardingApp
即可。該項目中已經打包有apk,在app目錄中,直接下載安裝即可,運行app,點擊加號添加轉發規則,截圖如下:
如上圖所示,在Rule Title中輸入一個標題,這個可以隨意填,在Protocol中選擇要使用的協議,有TCP、UDP、BOTH三個選擇,直接選BOTH即可包含TCP和UDP協議了,即使你只需要其中一個協議,也建議選擇BOTH,反正你用不用都不影響。在From中,選擇來源網絡接口,比如wlan0為Wi-Fi網絡接口,在端口處填入要監聽的端口,比如554,在Target中填入要轉發到的目標ip和端口,最后點擊右上角的SAVE
即可。這里需要注意,From中的端口必須是1024-65535范圍內的,所以,上圖中我們填入的554是不合法的,比如改為5545,設置好之后,點擊右上角的START
按鈕即可,截圖如下:
這樣我們就可以在電腦上使用rtsp://192.168.1.100:5545/stream_1
進行拉流了,FwdPortForwardingApp
會自動把192.168.1.100:5545
的請求轉發到192.168.1.200:554
。