-
Notifications
You must be signed in to change notification settings - Fork 154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stream ONVIF to be accepted by NVR #130
Comments
I looked at the other thread. if you used the RTSP stream firmware then what you'd have to do in RPOS is use RPOS Proxy Mode where the NVR talks to RPOS but when the NVR asks RPOS for the URL of the RTSP stream, RPOS returns a string that is the URL of the ESP32 camera. It may work. But.... it may just work fine. You cam try it and see and then we can have a go at fixing the issues but I have to do this in spare time so it could be several months before I get chance to work on it (if at all) Tempting to buy an ESP32 cameras myself just to play with. Finally... many NVRs just let you add a camera manually and let you select ONVIF or RTSP streams so you may just be able to add it manually. |
just out of interest, which version of the ESP-32 module do you use. |
Hi, Thanks for the explanation, the NVR (actually a hybrid DVR in my case) also accepts another type of camera other than ONVIF, if I remember correctly it's like a NET camera, but I haven't found anything about this protocol yet, unfortunately there's no way to put it many configurations, These chinese devices are usually made on demand and then cloned, so actually those who are just cloning may not even know how to improve this, besides possibly being an older architecture, and even then they put it up for sale to use the parts stock . About ESP32 with Camera: You can search it by "ESP32-CAM" You can see more specs here: https://www.arducam.com/esp32-machine-vision-learning-guide/ https://www.hackster.io/KDPA/esp32-cam-video-surveillance-smart-camera-7f9a63 |
There is a possibility to make any IP camera or NVR (or DVR) available just by opening ports on the router, and if the Internet connection does not have a fixed IP, a DDNS service can also be used, there are several models of routers that already have this settings. https://www.securitycameraking.com/securityinfo/how-to-connect-to-your-dvr-over-the-internet/ One such router is the TL-MR3020, which can access the Internet via ETHERNET port (RJ45 connector) and 3G/4G (USB port for external modem), in addition to enabling automatic switching if the main Internet connection fails. https://www.tp-link.com/en/support/faq/1491/ But about the ESP32-CAM service I don't know if it supports login to have a minimum of security to be used in this way. I found this option:
https://www.elementzonline.com/blog/Accessing-ESP32-CAM-Video-Streaming-from-anywhere-in-the-world |
Thanks for the link. But in the mean time, we can make it work wit these changes if you are up for some testing
And that should be it. This should be enough to make your RPOS device pull in video from the ESP32-CAM and re-distribute it as H264 video to your Hybrid DVR. |
I think it's interesting to do these tests, but unfortunately I also have loads to solve, so I've been talking to people who have more knowledge and maybe reach a solution more easily, than me learning to make the changes on my own. Anyway, I appreciate your attention. I will try to test this as soon as possible, I have Raspberry Pi 1 and 3. My ESP32-CAM are still coming. |
I'm going to try this now, thanks for the tip |
I couldn't figure out what to modify in gst-rtsp-launch.py so I set RTSPServer to 3 and CameraType to Other, but I'm having the same issue, i.e. it seems to connect, it gets info from the camera on framerate and resolutions, and the name, but it stalls at the GetURI call on the MediaService and never kick off a soap for the ImagingService |
dave@server:~/rpos$ sudo node rpos.js rtspServer: /home/dave/rpos/./python/gst-rtsp-launch.py:60: PyGIDeprecationWarning: GObject.MainLoop is deprecated; use GLib.MainLoop instead rtspServer: /home/dave/rpos/./python/gst-rtsp-launch.py:78: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading rtspServer: INFO:root:StreamServer initialized rtspServer: INFO:root:Video settings loaded from v4l2ctl.json rtspServer: DEBUG:root:StreamServer.launch rtspServer: DEBUG:root:( v4l2src is-live=true device=undefined brightness=50 contrast=0 saturation=0 ! queue ! jpegdec ! clockoverlay ! queue ! x264enc tune=zerolatency ! h264parse ! rtph264pay name=pay0 pt=96 ) rtspServer: INFO:root:Running RTSP Server Discovery received from 192.168.68.58 |
That was with no connection attempt, this is when it tries to connect: imaging_service started rtspServer: /home/dave/rpos/./python/gst-rtsp-launch.py:78: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading rtspServer: INFO:root:StreamServer initialized rtspServer: DEBUG:root:StreamServer.launch rtspServer: INFO:root:Running RTSP Server Discovery received from 192.168.68.58 DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service DeviceService - Calltype : info, Data : Attempting to bind to /onvif/device_service MediaService - Calltype : info, Data : Attempting to bind to /onvif/media_service |
Hello,
Since you already know how to implement the main part of the Onvif protocol,
Would it be very difficult to add the functionality so that an NVR that works with the Xmeye App can find and work with the streaming provided by the Raspberry Pi?
I believe that it is not so easy to implement the Onvif protocol in ESP32, due to limited RAM memory,
But it would be very useful to be able to count on the conversion of the stream generated by ESP32-CAM so that the NVR can make it available over the internet via P2P in the Xmeye App or similar.
It's really not the best solution, but it might be safer than leaving the ESP32-CAM's IP address open on the router and accessible on the internet.
I found another thread about this, but it doesn't seem to have any success yet:
bkeevil/esp32-cam#5
The text was updated successfully, but these errors were encountered: