iT邦幫忙

0

請問無實體IP的鏡頭如何透過Server幫助讓使用者可以在網頁上看到影像串流?

https://ithelp.ithome.com.tw/upload/images/20191205/20111188Ef34IOECL9.jpg

如題, 最後希望呈現的結果為使用者可以在網頁上去選擇要看哪一台鏡頭的畫面, 且可能會有多人同時看同一台的需求.
Server端是用ubuntu系統, 有實體IP, 網頁也是都在這.
鏡頭端可能是使用Raspberry Pi+USB Camera或是ESP32-CAM之類的設備.
Server和鏡頭是在不同場域, 鏡頭可能連接到一組實體IP的分享器或是沒有實體IP.
不知道有什麼方法可以讓使用者和鏡頭之間透過Server連接上?

--編輯--

感謝各位提供的意見

可能說明的不清楚不好意思, Server和鏡頭是在不同場域, 所以使用者或是Server都無法直接連到沒有實體IP的鏡頭.
目前看下來應該是二樓的webrtc最接近, 但好像只能透過瀏覽器, 若以ESP32-CAM(成本考量比較希望這個方案)或Raspberry Pi+USB Camera在瀏覽器這部分會有效能問題, 還在煩惱有沒有方法可以不用瀏覽器或是只利用webrtc中room機制來讓使用者和鏡頭連接上

kikulu iT邦研究生 5 級 ‧ 2019-12-06 11:20:08 檢舉
https://www.raspberrypi.com.tw/17506/raspberry-pi-camera-python-opencv-2days-workshop-at-nfu/

[教學] Raspberry Pi Camera + Python + OpenCV投影片和範例程式 @虎科大
ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:28:28 檢舉
可能說明的不清楚不好意思, Server和鏡頭是在不同場域, 所以使用者或是Server都無法直接連到沒有實體IP的鏡頭.
目前看下來應該是二樓的webrtc最接近, 但好像只能透過瀏覽器, 若以ESP32-CAM(成本考量比較希望這個方案)或Raspberry Pi+USB Camera在瀏覽器這部分會有效能問題, 還在煩惱有沒有方法可以不用瀏覽器或是只利用webrtc中room機制來讓使用者和鏡頭連接上
0
dscwferp
iT邦好手 1 級 ‧ 2019-12-05 11:45:13

參考
https://github.com/kekeqy/ke-rtsp

1. 安裝 node.js + npm
2. 下載 https://github.com/kekeqy/ke-rtsp 解壓縮 到新目錄比如d:\ke-rtsp-master
3. npm install socket.io
4. npm install node-red-contrib-viseo-ffmpeg
5. npm install node-red-ffmpeg
6. 下載 ffmpeg https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.1.1-win64-static.zip
7. 將 ffmpeg.exe copy 到 d:\ke-rtsp-master
8. 修改sample/index.html中的config物件的url參數為你的rtsp測試位址。
url: 'rtsp://10.1.4.135:554/user=xxx&password=xxx&channel=1&stream=1.sdp?'
9. 命令列進入到專案目錄,執行命令node sample/index.js。
10. 流覽器打開http://localhost:8080/。
11. 更改 dist/StreamingMediaServer.js 裡面的 if (channel.freeTime >= 60) 改成 if (channel.freeTime >= 6) , 
這樣瀏覽器關閉 6秒後
就可以更改 sample/index.js 裡 新的 rtsp測試位址
重新瀏覽器打開http://localhost:8080/ 就會連到  新的 rtsp測試位址
這樣就可以動態切換
ny88504 iT邦新手 5 級 ‧ 2019-12-05 14:07:39 檢舉

裡面提到, 修改url為鏡頭位置
url: 'rtsp://admin:admin888@192.168.1.64:554/h264/ch1/main/av_stream'
看起來還是沒辦法解決沒有實體IP的問題
謝謝

dscwferp iT邦好手 1 級 ‧ 2019-12-05 16:49:43 檢舉

url: 'rtsp://admin:admin888@192.168.1.64:554/h264/ch1/main/av_stream'

SERVER 有 兩張內外網卡
內網卡 可以抓到 192.168.1.64 rtsp
然後給外網卡去SHOW: http://實體IP:8080/
就可以對內外了
您試試看就知道了!
我做過成功才跟您說!

ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:28:42 檢舉

可能說明的不清楚不好意思, Server和鏡頭是在不同場域, 所以使用者或是Server都無法直接連到沒有實體IP的鏡頭.
目前看下來應該是二樓的webrtc最接近, 但好像只能透過瀏覽器, 若以ESP32-CAM(成本考量比較希望這個方案)或Raspberry Pi+USB Camera在瀏覽器這部分會有效能問題, 還在煩惱有沒有方法可以不用瀏覽器或是只利用webrtc中room機制來讓使用者和鏡頭連接上

3
froce
iT邦大師 3 級 ‧ 2019-12-05 14:05:55

webrtc。結案。

https://developer.mozilla.org/zh-TW/docs/Web/API/WebRTC_API
然後因為你網路需要穿透,所以需要 STUN/TURN server。

ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:38:42 檢舉

目前看下來應該是webrtc最接近, 但好像只能透過瀏覽器, 若以ESP32-CAM(成本考量比較希望這個方案)或Raspberry Pi+USB Camera在瀏覽器這部分會有效能問題, 還在煩惱有沒有方法可以不用瀏覽器或是只利用webrtc中room機制來讓使用者和鏡頭連接上

froce iT邦大師 3 級 ‧ 2019-12-07 15:48:16 檢舉

http://lynckia.com/licode/index.html

查一下webrtc native。

0
runan5678
iT邦新手 1 級 ‧ 2019-12-05 15:06:02

一般的ip-cam通常都會有網頁的方式去存取畫面和做一些設定,這種方式一般做個NAT都能夠正常存取。
但不清楚server是所謂的監控主機還是要做為Web server讓user做存取的主機這就很難說..
因為有些監控主機是可以透過網頁的方式去看畫面也可以選要看的ip-cam
如果做為Web Server就看要怎麼把畫面放在裡面做存取

看更多先前的回應...收起先前的回應...
ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:35:04 檢舉

應該是偏向後者, 但Server和鏡頭是在不同場域, 若鏡頭那邊沒有實體IP是不是也無法NAT讓Server連得到呢

runan5678 iT邦新手 1 級 ‧ 2019-12-06 15:48:00 檢舉

ny88504
我覺得要先解決的是server如何去收到ip-cam的畫面這個問題,不如先去看看ip-cam的規格和存取方式,再看看怎麼連線,如果ip-cam是類似小米那種隨插即用的模式,我這邊是沒辦法囉

ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:52:55 檢舉

我的鏡頭目前是ESP32-CAM或Raspberry Pi+USB Camera這兩種方案, 跟一般的IP-CAM不一樣.
因為效能關係目前兩種都是用mjpeg stream, 若有其他一樣比較不吃效能又夠順暢的也可考慮

runan5678 iT邦新手 1 級 ‧ 2019-12-06 16:01:54 檢舉

這兩種都可以透過網路存取,如果兩個地方在不同的場域又需要透過internet來連線一定會需要至少一個實體IP,其他的部分可以透過轉port方式處理(靠網路設備做)

0
James
iT邦大師 7 級 ‧ 2019-12-05 17:08:06

用反向代理伺服器可以處理

0
echochio
iT邦研究生 2 級 ‧ 2019-12-05 21:33:40
 串流 直接打到 server 上只要 port 不同就可以了,你的cam 可以設定port 嗎?
之前是做這方面工作的,vlc 就可做到串流轉 port 
  由 vlc 去 cam 拉串流,然後將串流打到主機特定 port , web 使用著只有連那特定 port 就可看到影音了... 
ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:29:08 檢舉

可能說明的不清楚不好意思, Server和鏡頭是在不同場域, 所以使用者或是Server都無法直接連到沒有實體IP的鏡頭.
目前看下來應該是二樓的webrtc最接近, 但好像只能透過瀏覽器, 若以ESP32-CAM(成本考量比較希望這個方案)或Raspberry Pi+USB Camera在瀏覽器這部分會有效能問題, 還在煩惱有沒有方法可以不用瀏覽器或是只利用webrtc中room機制來讓使用者和鏡頭連接上

0
hsuhonghai
iT邦見習生 0 級 ‧ 2019-12-06 11:22:05

透過 4G/Lte TCP 傳輸 Video stream 即可

RPi + Camera = 4g/lte ==> PC server <== 手機 HTTP 觀看

ny88504 iT邦新手 5 級 ‧ 2019-12-06 15:32:39 檢舉

請問可以再詳細說明一點嗎, 這是指鏡頭TCP傳到Server, 使用者再從Server要畫面嗎?
這個做法要是鏡頭數量多是否Server負荷會很重?

0
adolpha
iT邦新手 5 級 ‧ 2019-12-06 16:17:30

我之前的作法是cam一開機就跟server建vpn,這樣server可以知道所有cam的狀態也可以去操控cam及其他裝置

之前是要開發遠端寵物餵食機,後來開模費太高就放棄了.......

0
iopus26
iT邦見習生 0 級 ‧ 2019-12-06 20:17:46

ipv6 => 技術及服務成本最低
p2p tunnel => 技術成本最高
rtsp => 服務成本最高

我要發表回答

立即登入回答