How do I connect my IP Remote Camera to ZoneMinder? - ip-camera

I am using Ubuntu 16.04, ZoneMinder v1.29.1 with this docker and this camera(hikvision ir panoramic fisheye). I can connect to the camera and I get the camera interface for settings etc. The problem is the live views need a windows dependent plugin, that's why I wanted to use ZoneMinder.
Now I configured everything according to this guide. Basically I had to add a monitor, set the source to remote, set the protocol to rtsp, set the method to rtp/rtsp, set the host name to < user>:< pw>#< correct-ip>, set port to the rtsp port reported by the camera webinterface and set the host path to all possible things: I tried /Streaming/Channels/[1,2,3,4]/ and /live and /Streaming/Channels/[101,102,103]-[401,402,403,404]/ but I never had a live stream. I really don't know what I am doing wrong. Does anybody know the right host path or any other issues that could prevent me from receiving a live feed? According to this site the hikvision products should work with ZoneMinder. Maybe I am just missing something small and stupid, thank you.
EDIT:
I used ONVIF Device Manager to detect my rtsp stream: It is rtsp://< ip>:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_101 and I use exactly those settings in ZoneMinder but it does still give me a 404 error on the video.

Most Hikvision cameras don't work with the "Remote" option, but with the "Ffmpeg" option.
Source should begin with rtsp://"username":"passwd"#"IP-ADDRESS cam":554 and sometimes you have to append things like /cam/realmonitor?channel=1&subtype=0?tcp
Protocol should be RTP/Unicast

Related

Route websocket data through USB link to PC client (Android)

I have an issue where WiFi is not available on an Android device. We want to stream image data from the device using a websocket server (written using WebSocket++) through to the PC. However, I'm not sure if this is possible without operational WiFi. So, the position we are in is that we may only have the USB link available.
Someone today suggested we might be able to get Websockets working using adb port forwarding (see https://developer.android.com/studio/command-line/adb#forwardports), but I'm not sure if that's correct. Could this work, and what would that solution look like?
Are there any other reasonable options. I'm not certain if tethering is available on the device and if that could be another solution?

Golang `pions` lib example issue

I've just started experimenting with WebRTC with Go and downloaded pions/webrtc library but I'am stuck with it's data-channels example.
As it written in docs I opened jsfiddle client example.
Then I'am running go run main.go command in the /go/src/github.com/pions/webrtc/examples/data-channels folder on my server to launch data-channel.
After that I copy Browser base64 Session Description from jsfiddle example and paste it into my terminal where data-channels go script is running and it generates Golang base64 Session Description code which I paste into jsfiddle example and then press Sart session button.
And it fails to establish connection :(
This is my jsfiddle example for client side:
And this is my server side go script:
What am I doing wrong?
Thanks for using pion-WebRTC (I am one of the developers!)
WebRTC uses a technology called ICE to allow peers to talk to each other. Two peers exchange IP addresses via the SDP (the text you pasted) then they attempt to communicate by sending small UDP packets between each other. Once two IP addresses successfully communicate via ICE the rest of the WebRTC steps can continue. For you this process is failing. I don't know how/why though. Firewalls, VPNs etc... all can cause problems.
You will have to debug and check different scenarios. I would try running the examples on your local PC. If that works then maybe try between a different server. A good tool to help here also is tcpdump that can show if UDP packets are arriving. I usually use tcpdump -i any udp and inbound
We also recently added IPv6 support, so might be worth trying from master and see if that helps at all! Hopefully this helps, but if you are still having issues feel free to ask more questions. We are also all available via our Slack Channel you can sign up here here and would be more then happy to chat!
I met similar problem, and I solved by
echo $BROWSER_SDP | ./main
BROWSER_SDP is the session description in your browser, main is the exe by go build main.go(you can rename exe by mv). This can make sure transfer SDP to the server, which is really important.
The detail

RTSP Proxy for local accessed content archive

I have local access from one computer to RTSP server by my ISP which is delivering IPTV content archive (timeshift). RTSP is avilable only from this computer because it has correctly configured internet access to the server. Because I would like to watch the content of this RTSP server on every device at home, I'd like to create local server which would accept connections and just transfer data from the end server (by ISP) to client.
I already tried to configure Live555 RTSP Proxy, but it's not really the right software which would enable me what I need. Another thing I tried out is Darwin Streaming Server, but I think it wouldn't support the format of IPTV content archive. What do I actually need?
Link to ISP's content archive looks like: rtsp://archive.my-isp.tld:554/programme_id_channel.ts.
I would like to access to the same stream via rtsp://IP-of-my-computer:port/programme_id_channel.ts.
Is there any software which is acting like proxy and it would be possible to set it to my needs? I would really appreciate any answer and help.
P.S.: Type of ISP's stream is MPEG TS.
EDIT: I already tried out node-ffmpeg-mpegts-proxy and it works good for approximately 10 seconds, then I got some error from avconv about RTSP packet loss and stream stops. I would also need an option to seek video to wanted destination and with current setup (default options of avconv) of node-ffmpeg-mpegts-proxy. For the start I need something that will successfully stream video from source to destination.

How to debug whitelisted Chromecast

I have completed Google's form to enable my device to be whitelisted and have been provided with an AppID.
I have followed the procedures outlined here to try and debug the device with no success:
https://developers.google.com/cast/developing_your_receiver#debugging
I am able to ping my device by the IP, but connecting to port 9222 results in failure. Telnet to that port is also unsuccessful.
Does anyone know why this might not be working? I must be missing something simple.
The problem was that my Chromecast device was not sending the serial number to Google.
I was able to get it to work by enabling the sending of the devices serial number in the Windows settings utility (changing this setting in the android app didn't seem to work). After changing the setting I rebooted the device, and now I can connect on port 9222. I am not sure why this isn't in the developer walk through... or maybe I missed it?
I only got this option when I opened "Options" in the Google Cast Extension inside Chrome and then clicked on the blue icon about a dozen times very quickly. Suddenly a new option appeared at the bottom where I could enter the hostname of my whitelisted URL:
I also made sure that "send serial number" was enabled in the Chromecast.app (and make sure to reboot!)
Now, I am able to hit port 9222 in a browser and can see my app at http://{my-chromcast-ip}:9222/. I can use dev tools in Chrome to debug, refresh the page, inspect on-screen elements, etc.
Something else that I haven't seen others mention yet. If you're going to the right IP and getting the link to remote debugging, but you don't see your source, elements, etc. It could be blocked by security settings. This stumped me for a while until I noticed a small shield icon in my url bar. Click on this and allow it to load sources. Once I did that everything populated as expected.
I struggled a bit with this one. I think some things might have changed with the last firmware update on the Chromecast. I could connect to port 9222 after I did the following:
Registered the custom receiver and host it on the outside of my network (on Google Drive:
https://support.google.com/drive/answer/2881970?hl=en)
Launch the receiver. I used the Chromecast example https://github.com/googlecast/CastHelloText-chrome
Make sure the app ID in chromehellotext.html is the one registered on your account.
When After this, I could connect to the debugging port.
The port is only open when your custom receiver is running on the Chromecast.
I also might be useful to enable debugging on the chrome extension. This will show what's going on between the Chromecast and sender:
https://developers.google.com/cast/docs/chrome_sender
I realize that this is an ancient question, however my answer might help people searching in the future.
Simply rebooting the Chromecast after having set up my details in the Cast console helped for me.
You must cast to a custom receiver first (at least once) before trying to access the IP with debug port. Otherwise debugging won't be enabled.

IIS Live Smooth Streaming to AWS EC2

I am trying to do live video streaming from my laptop webcam out to a AWS EC2 Windows instance. Below link details the steps I followed: http://learn.iis.net/page.aspx/620/getting-started-with-iis-live-smooth-streaming/
A few seconds after pressing the "START" on ExpressionsEncoder4, I get random error pop-outs like "An unknown error has occurred", "A network error has occurred causing the encode to stop" and "The request could not be understood by the server".
Once in a while, these errors doesn't appear and I am able to see the captured video output on the preview screen.
At any one time, I am unable to register any streams on the IIS Publishing Point.
Any ideas? Thanks for any help!
There are a few problems here to solve. Let's go through them one by one.
Unknown Errors
Most often, "an unknown error has occurred" comes from calls to DirectShow APIs that fail for any unexpected reason (weird capture device, CPU can't keep up with encode, and basically any event that can interrupt the DirectShow graph frame stream). Try a different capture source, and see if your results change. Also, do a long encode from your device to a local Windows Media file to make sure everything is okay here.
Network Errors / Request not Understood by Server
Network errors in my experience have been mostly related to bandwidth; however Request Not Understood could mean you have something changing something in your HTTP requests (a proxy in between, etc).
Test On-Demand First
Test an on-demand stream from your EC2 server first. Download Big Buck Bunny or encode something yourself and make sure you can access http://example.com/BigBuckBunny.ism/Manifest in your browser. Test it using Smooth Streaming Health Monitor on the client side and server chunk performance using IIS Smooth Streaming Performance Testing Tool. This will verify that IIS Media Services is working properly.
Startup Order
Make sure you are starting your live publishing point stream in the following order:
On your EC2 server, navigate to the Live Publishing Point and start it. This will put the publishing point in a state that is ready to accept a stream.
In Expression Encoder, press Connect after entering the publishing point URL. You should see a successful connection at this point as long as port 80 is open.
Press Start and encoding should begin. (Best to start with only 1 or 2 bitrates when testing your stream; keep the bandwidth low.)
Alternate Setup
If all else fails, set up a Smooth Stream on your localhost (Expression pushes stream to IIS Media Services on localhost), and configure your localhost publishing point to push the stream to your EC2 instance. This is also a good method to use if you need a more network-hiccup-tolerant solution for long term streams or where your connection isn't as solid as you'd like.
Good luck and hopefully some of this info will narrow it down.

Resources