Hikvision setup

Yes, every second is the expected behavior. The image updates every second.

In the default view it only updates every 10secs.
If you click on the image, only then it updates every 1sec.

Yes…that seems about right. Remember, HA is not a video surveillance system.

I understand that.

I guess my initial question should have been, can HASS display video streams in realtime

I don’t think so.

@Coolie1101 HASS can absolutely display a realtime video stream, but there are some caveats. You can only do it in the pop-up window (main page display is limited to a 10 second refresh) and you need to configure it as a “mjpeg” camera type, not generic.

For a hikvision camera I use a URL syntax like below:

camera:
  platform: mjpeg
  mjpeg_url: http://X.X.X.X/Streaming/Channels/2/preview
  username: user
  password: pass

You then need to make sure you have the substream set to “MJPEG” in your camera settings like the in the snapshot below.

2 Likes

That’s exactly what I’m getting now with it configured as Generic, and the sub-stream set to H.264.

In the pop-up window it refreshes every second which is not really real-time.

I’ll try your recommendation and report back.

That worked.

Any reason why it can’t be configured to use the H.264 stream?

Is this configuration info available somewhere?

My cameras have built in mic, any way to get the audio stream as well?

1 Like

HASS and most browsers only have native support for displaying mjpeg streams. H.264 gets trickier in universal support.

No audio support as far as i’m aware on any of the camera platforms. There may be something in FFMpeg if you want to look through those docs.

Thanks, will do.

I’m getting the following since I added the camera as you suggested, any ideas?

17-04-27 01:10:03 WARNING (Thread-3) [requests.packages.urllib3.connectionpool] Failed to parse headers (url=http://192.168.200.54:80/Streaming/Channels/2/preview): [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’
Traceback (most recent call last):
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py”, line 398, in _make_request
assert_header_parsing(httplib_response.msg)
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/util/response.py”, line 66, in assert_header_parsing
raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data)
requests.packages.urllib3.exceptions.HeaderParsingError: [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’
17-04-27 01:10:13 WARNING (Thread-8) [requests.packages.urllib3.connectionpool] Failed to parse headers (url=http://192.168.200.54:80/Streaming/Channels/2/preview): [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’
Traceback (most recent call last):
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py”, line 398, in _make_request
assert_header_parsing(httplib_response.msg)
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/util/response.py”, line 66, in assert_header_parsing
raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data)
requests.packages.urllib3.exceptions.HeaderParsingError: [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’
17-04-27 01:10:23 WARNING (Thread-9) [requests.packages.urllib3.connectionpool] Failed to parse headers (url=http://192.168.200.54:80/Streaming/Channels/2/preview): [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’
Traceback (most recent call last):
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py”, line 398, in _make_request
assert_header_parsing(httplib_response.msg)
File “/srv/homeassistant/lib/python3.4/site-packages/requests/packages/urllib3/util/response.py”, line 66, in assert_header_parsing
raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data)
requests.packages.urllib3.exceptions.HeaderParsingError: [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ‘’

That’s a known bug in the urllib3 library. You can suppress the log messages (they are harmless) by adding this line under your logger/logs section in your configuration.yaml.

requests.packages.urllib3: critical

I got my camera working with the above config - works a treat :smiley:

Is it possible to manually trigger recording? I am using Hikvision cameras with Synology Surveillance Station (SS). Neat thing about SS is that it can automatically pre-record a few seconds (can be configured) before the actual trigger.

There is a post here that triggers manual recording, but it will be nice to get something integrated in the pyhik library.

@arsaboo Unfortunately, there are no hikvision API commands to trigger recording so there isn’t anything I can add to pyHik. I’ve seen some people have success with a workaround involving hardware alarm triggers which can be flipped via the api. If your cameras have support for that option it may be worth looking into.

I just do everything within the cameras (options are actually fairly robust) and point the recording location to mounted images on my unraid server so everything is stored in one place.

Is 480p the maximum resolution for MJPEG?
Could I set to 720p at least?

I think it’s camera specific, but I’ve only ever seen 480p as an option. The mjpeg format isn’t as efficient as something like rtsp so I don’t know if it can handle higher resolutions well.

Oh yeah, substream only has 480 maximum resolution.
Could I get live streaming on HASS if I use rtsp instead?

I believe you can use RTSP streams with the ffmpeg component.