How can I create a live multi-camera streaming view for all my amcrest security cameras (without ffmpeg)?

I want to create a view in Home Assistant that mimics the multi-camera view that you can get with Blue Iris, so that I can watch all of my cameras at the same time (without needing to use ffmpeg). I know when adding the amcrest cameras the still image displays (mjpeg) & refreshes every few seconds. If I’m not mistaken (I very well could be), when clicking on a single camera then you can see it’s live stream full screen.

I’d like to figure out a way to have all of my cameras (up to six) display their live streams on a single stream. I guess the best option really would be to create a custom html page and embed all the streams in there, save it locally, then add a link to that page in the side panel (as an iframe_panel). Is this the best way to go? I’m open to hearing other suggestions & examples setups would be really nice.

Also, I’d really like to find some way to get this project to work with my amcrest cameras to be able to cast them to my google chrome devices, but I don’t have an extra device to run blue iris on & in order to stream amcrest streams I would need to use ffmpeg I believe.

My setup:
Hassbian on Raspberry Pi 3b+, 32gb SD card

FIRST… get an 802.11-ac router. You are going to need the bandwidth.

A 802.11 b/g/n router won’t do the trick?

I’ve been able to stream 4 cameras simultaneously without issue after I turned each camera down to 5 frames per second or less. Otherwise timeouts, blackouts and frame freezes were way too common.

Ok, so if I do that how would I accomplish this setup?

I did it outside of HA by using Amazon firesticks ($25) and the tinyCAM app ($5). I really don’t think the PI3b+ has the horsepower to stream 6 cameras simultaneously… but I could be wrong.

I’ve got 4 cams on a single page (4 lovelace cards) running the 10 second refresh and the click to individually go live. That works very well.

Could you share your setup? Are you running Tinycam on a spare Android tablet or something else?

The tinycam runs right inside the firestick. It’s standalone… the $5 license fee lets me put it on 8 firesticks and 3 tablets that I have. I only have an 802.11 b/g/n at the homestead here so even with this setup, more than 3 firesticks running the tinyCAM at the same time eats my entire internal bandwidth.

I have a suggestion that could save you some bandwidth. Why run tinyCAM on more than one device? You could just run it on one device and buy/install Tasker on the same device, which would allow you to cast to any of the firesticks I believe. The idea of tinyCAM is to only need one instance running really.

This is part of my camera.yaml file:

- platform: mjpeg
  mjpeg_url: http://192.168.1.201:13101/videostream.cgi?user=admin&pwd=xxxxxx
  still_image_url: http://192.168.1.201:13101/snapshot.cgi
  username: admin
  password: lemme1n
  authentication: digest
  name: 406_west

- platform: mjpeg
  mjpeg_url: http://192.168.1.202:13102/videostream.cgi?user=admin&pwd=xxxxxx
  still_image_url: http://192.168.1.202:13102/snapshot.cgi
  username: admin
  password: lemme1n
  authentication: digest
  name: 406_north

- platform: mjpeg
  mjpeg_url: http://192.168.1.206:13106/videostream.cgi?user=admin&pwd=xxxxxx
  still_image_url: http://192.168.1.206:13106/snapshot.cgi
  username: admin
  password: lemme1n
  authentication: digest
  name: 406_east

- platform: mjpeg
  mjpeg_url: http://192.168.1.205:13105/videostream.cgi?user=admin&pwd=xxxxxx
  still_image_url: http://192.168.1.205:13105/snapshot.cgi
  username: admin
  password: lemme1n
  authentication: digest
  name: 406_south

- platform: mjpeg
  mjpeg_url: http://192.168.1.208:13108/videostream.cgi?user=admin&pwd=xxxxxx
  still_image_url: http://192.168.1.208:13108/snapshot.cgi
  username: admin
  password: lemme1n
  authentication: digest
  name: 406_door

This is my ui-lovelace.yaml file for that page:

  - title: Exterior
    id: exterior
    cards:
      - type: picture-entity
        title: North
        entity: camera.406_north
        camera_image: camera.406_north
        show_info: true
        tap_action: dialog

      - type: picture-entity
        title: East
        entity: camera.406_east
        camera_image: camera.406_east
        show_info: true
        tap_action: dialog

      - type: picture-entity
        title: West
        entity: camera.406_west
        camera_image: camera.406_west
        show_info: true
        tap_action: dialog

      - type: picture-entity
        title: South
        entity: camera.406_south
        camera_image: camera.406_south
        show_info: true
        tap_action: dialog

Might be worth having a look at Motion Eye, there was an addon just released, or you can install in manually, you can then use that to view everything in a side panel. Screenshots · motioneye-project/motioneye Wiki · GitHub

I run it on a dedicaded machine, but I am running 20fps, 800x600, 7 camera’s, but with smaller settings, should run ok on the pi.

I’m running hassbian, not hassio. So, add-ons won’t work for me. But, I’d be cool running it on my pi alongside Home Assistant if it wouldn’t bog it down too much. However, I imagine it would.

I think it use’s as much processing power as you want it too, can have it down to 1 fps, at 320x200, I don’t think its a very memory hungry program. Worth having a look, really simple to use, and install if you know a little bit about command line installs.

I’ll give it a more thorough look over tomorrow in that case, thanks for the suggestion :slight_smile:

there is also https://github.com/ccrisan/motioneyeos if you have a spare Pi lying around.