mpromonet / webrtc-streamer

WebRTC streamer for V4L2 capture devices, RTSP sources and Screen Capture
https://webrtcstreamer.agreeabletree-365b9a90.canadacentral.azurecontainerapps.io/?layout=2x2
The Unlicense
2.83k stars 582 forks source link

Distributed Deployment of streamer/UI : video not viewed over HTTPS ( Not picking the list config.json ) , Refered #352 , #505, #344 #574

Closed cloudties closed 11 months ago

cloudties commented 1 year ago

HTTP WORKS FINE, IN ALL CASES as below ,, For clarity giving all sample

1) Launched in a pi I192.168.29.63 ) sudo docker run -p 8000:8000 --network host -v $PWD/config.json:/app/config.json webrtcarm71

2) Works : HTTP directly from PI http://192.168.29.63:8000

3) proper entry in /etc/hosts for doamin

4) webrtcconfig.js File ON remote apache server var webrtcConfig = { url: "http://192.168.29.63:8000", //url: "https://192.168.29.63:8443", options: "rtptransport=tcp&timeout=60", layoutextraoptions: "&width=320&height=0", defaultvideostream: "nousb" }

5) Works : HTTP launched from remote apache http server
http://webrtctest.com/view.html?layout=1x3

HTTPS WORKS FINE IN SOME CASES and one Specific case not working

1) openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout ssl-cert-snakeoil.key -out ssl-cert-snakeoil.pem -subj "/C=IN/ST=Karnataka/L=Bangalore/O=IT/OU=Development/CN=0.0.0.0"

2) cd /home/pi mkdir cert cd cert cat ssl-cert-snakeoil.key ssl-cert-snakeoil.pem > all.pem

3) launched on pi (192.168.29.63 ) sudo docker run -p 8000:8000 --network host -v /home/pi/cert:/mnt -v $PWD/config.json:/app/config.json -it webrtcarm71 -H 8000r,8443s -c /mnt/all.pem -w ./html -D 192.168.29.63

4) webrtcconfig.js File in remote apache server var webrtcConfig = { //url: "http://192.168.29.63:8000", url: "https://192.168.29.63:8443", options: "rtptransport=tcp&timeout=60", layoutextraoptions: "&width=320&height=0", defaultvideostream: "nousb" }

5) Works : Directly from the deployment in pi https://192.168.29.63:8443/webrtcstreamer.html?video=rtsp://192.168.29.63:8554/unicast

6) Works : Called from remote apache http server with a proper mapping entry in /etc/hosts for domain https://webrtctest.com/view.html?video=rtsp://192.168.29.63:8554/unicast

------------------------- The only non working piece here ------------------------------------ 7) This case is not working, which is what we need to integrate with external site : . Show blank screen https://webrtctest.com/view.html?layout=1x3

8) The other api results with https below works , give result https://192.168.29.63:8443/api/version print v0.7.2/Linux-armv6l civetweb@v1.15 webrtc@e29bc89-dirty live555helper@88bba48

9) https://192.168.29.63:8443/api/getMediaList give blank page and empty array as result print [ ]

10) The view,html (zip attached) by some reason missing the device list. The view.html is is nothing but the copy of the default index.html provided in the webrtc-streamer-html repo
view.zip


Finally since UI is separately webhosted is there a way to pass the list of video urls to view.html, rather than one url (which works in step 6 of https) .I should be able to pass array of URL in the UI or getMediaList should have capability to provide all the URLs across all the launched webrtc-streamer docker container.

Refer :#344 How to populate webRtcServerList if we have multiple docker container to serve the webrtc streams . should we define a array of server in webrtcConfig file and update this in js files to accommodate the use case(like below ) or do we have a build in solution
{ ....... server: ["https://192.168.29.63:8443","https://17.16.9.3:8000"] }

cloudties commented 1 year ago

Closed .The issue is with the docker . I build it locally and it works