Skip to content

Tested Configurations

bombcar edited this page Jan 20, 2019 · 25 revisions

Tested Configurations

Locating URL paths for cameras

ISpyConnect maintains a large database of camera manufacturers, supported methods (MJPEG, FFMPEG, RTSP), and the necessary URL’s (and querystrings) needed for accessing video, audio, and stills.

If you don’t know, or can’t find this information, start with this website.

Hikam S5 + Raspberry Pi2

  • using homebridge-camera-ffmpeg-omx from legotheboss
  • removed "-tune zerolatency" from ffmpeg.js (invalid option for my installation)
  • low res "rtsp://xxx.xxx.xxx.xxx/onvif2" stream works fine w/ moderate cpu load
  • high res "rtsp://xxx.xxx.xxx.xxx/onvif1" stream works w/ cpu load of 150%

Alptop AT-200B

  • using homebridge-camera-ffmpeg
  • authentication for rtsp disabled in camera config
  • RaspberryPi seems to work with higher res but chokes
{
	"platform": "Camera-ffmpeg",
	"cameras": [{
		"name": "Crib Camera",
		"videoConfig": {
			"source": "-re -i rtsp://192.168.88.198/channel1",
			"maxStreams": 2,
			"maxWidth": 1280,
			"maxHeight": 720,
			"maxFPS": 20
		}
	}]
}

Avtech MDR751B DVR

Server running on windows 10.

{
“name":
 "Entrance Camera",
 "videoConfig": {"source":
    "-rtsp_transport tcp -re -i rtsp://admin:admin@192.168.1.26/live/h264",
  "maxStreams": 1,
  "maxWidth": 640,
  "maxHeight": 480,
  "maxFPS": 30
 }

Blue Iris

If you have a Blue Iris server, you can add any camera with the following configuration:

	{
  	    "platform": "Camera-IP",
  	    "cameras": [
    	        {
      	            "name": "My First Camera",
      	            "videoConfig": {
      		        "source": "-re -i http://user:password@serverip/h264/camshortname/temp.ts",
        	        "stillImageSource": "-i http://user:password@serverip/image/camshortname?q=75",
      		        "maxStreams": 2,
      		        "maxWidth": 1280,
      		        "maxHeight": 1024,
      		        "maxFPS": 15
      	            }
    	        }
  	    ]
	}
  • user/password - user with camera view permissions in Blue Iris
  • serverip - The IP or hostname of your Blue Iris server
  • camshortname - The short name of the camera in Blue Iris
  • maxWidth/maxHeight - set to the camera native resolution

For example, you could use the following URL if for user:homebridge, password: password, server: bi.example.com, camshortname: driveway http://homebridge:password@bi.example.com/h264/driveway/temp.ts

MotionEyeOS

This config reads images from a remote computer (e.g. Raspberry Pi) running MotionEyeOS with default settings, using an IP of 192.168.2.26. If you use MotionEyeOS' fast network camera feature, then you need to change the stillImageSource to the appropriate URL.

    {
        "platform": "Camera-ffmpeg",
        "cameras": [
            {"name": "MotionEyeOS",
                "videoConfig": {
                    "source": "-re -f mjpeg -i http://192.168.2.26:8081",
                    "stillImageSource": "-f mjpeg -i http://192.168.2.26/picture/1/current/",
                    "maxStreams": 2,
                    "maxWidth": 1280,
                    "maxHeight": 800,
                    "maxFPS": 10
                 }
            }
        ]
    }

tested Amcrest IP2M-841

Tested from Linux. These camera's aren't that great and have difficulty holding a stream for longer than 30s.

config.json

{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "Nursery Camera",
      "videoConfig": {
        "source": "-xerror -rtsp_transport tcp -i rtsp://username:password@10.0.1.5/cam/realmonitor?channel=1&subtype=0 -c:a aac -b:a 128k -c:v libx264 -b:v 2500k -preset superfast",
        "stillImageSource": "-i http://username:password@10.0.1.5/cgi-bin/snapshot.cgi",
        "maxStreams": 2,
        "maxWidth": 1280,
        "maxHeight": 720,
        "maxFPS": 30
      }
    }
  ]
}

tested ROCAM-NC400HD camera with Raspberry Pi Model B 512Mb RAM - jessie by BonRm

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Camera Rocam-NC400HD",
         "videoConfig":{
            "source":"-re -i http://IPADDRESS:PORT/videostream.cgi?loginuse=ADMIN&loginpas=PASSWORD",
            "stillImageSource":"-i http://IPADDRESS:PORT/snapshot.cgi?user=ADMIN&pwd=PASSWORD",
            "maxStreams":2,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":30
         }
      }
   ]
}

Notes: Replace IPADDRESS:PORT, ADMIN, PASSWORD with your data

VESKYS 720P Tilt / Pan, (example)

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Veskys Camera",
         "videoConfig":{
            "source":"-rtsp_transport tcp -i rtsp://admin:PASSWORD@IPADDRESS:10554/tcp/av0_0 -map 0",
            "stillImageSource":"-i http://IPADDRESS:81/snapshot.cgi?user=admin&pwd=PASSWORD",
            "maxStreams":2,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":30
         }
      }
   ]
}

Notes: Replace IPADDRESS, PASSWORD with your data. I could not get this working with RPi and ffmpeg-omx, but working successfully on a macOS installation

IP Webcam App by Pavel Khlebovich

Working through http

config.json

{
   "name":"Bedroom",
   "videoConfig":{
      "source":"-re -i http://src/video",
      "stillImageSource":"-i http://src/shot.jpg",
      "maxStreams":2,
      "maxWidth":640,
      "maxHeight":480,
      "maxFPS":30
   }
},

Ubiquiti AirCam (Generation 1, firmware v3.1.4.39), RPi 3

Working without Ubiquiti NVR (running software UniFi Video), available on [Ubiquiti site] (https://www.ubnt.com/download/unifi-video/) or via a direct RTSP connection to camera (older firmware, via ffmpeg).

Using https://github.com/legotheboss/homebridge-camera-ffmpeg-omx fork for RPi 3 support.

config.json

{
   "name":"Driveway",
   "videoConfig":{
      "source":"-rtsp_transport http -re -i rtsp://domain:port/4a1baa33-31a8-52f3-5524-12345aa111a7_0",
      "maxStreams":2,
      "maxWidth":1270,
      "maxHeight":720,
      "maxFPS":15
   }
}

Notes:

  • The RTSP stream can come from cameras or UniFi Video server (probably from the NVR too).
  • Works remotely if you have Apple TV 4/iPad setup as a homekit hub.
  • Running homebridge on Raspberry Pi 3.
  • Streaming startup takes ~10s, thumbnails get generated automatically.

Sannce 1080P IP Cameras

Purchased as a set of 4 with an NVR (no HD), available on [Amazon.ca] (https://www.amazon.ca/gp/product/B01ABRSM8S/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1) (Model POE-1080P-4CH)

config.json

{
   "name":"Sannce",
   "videoConfig":{
      "source":"-rtsp_transport tcp -re -i rtsp://192.168.1.100/user=name_password=pass_channel=1_stream=0.sdp?real_stream",
      "maxStreams":2,
      "maxWidth":1920,
      "maxHeight":1080,
      "maxFPS":30
   }
}

Notes:

  • The IP address can be the cameras themselves, or the NVR.
    • You can specify different cameras from the NVR IP by incrementing the channel number.
  • Adding the -rtsp_transport tcp option greatly improved the video performance and quality for me.
    • Without it, stream would take a long time to load, stutter frequently, and would often be covered in streaks and artifacts.
    • Anyone looking to improve the output of similar IP cameras should also look at ffmpeg's RTSP-specific options
  • I found that the quality of the stream would suffer when multiple devices were streaming straight from the cameras/NVR, so I've set up an RTSP proxy on the same machine running homebridge-camera-ffmpeg
  • I'm running homebridge-camera-ffmpeg and its own instance of homebridge in a docker container using the marcoraddatz/homebridge image.
    • This required installing ffmpeg from the jessie-backports apt source inside the container.

D-Link ip camera (930L)

Tested on Raspberry Pi 3 (with omx)

config.json

{
	"name": "D-Link Camera",
	"videoConfig": {
		"source": "-re -f mjpeg -i http://admin:password@localip:port/video.cgi",
		"stillImageSource": "-f mjpeg -i http://admin:password@localip:port/image.jpg",
		"maxStreams": 2,
		"maxWidth": 640,
		"maxHeight": 480,
		"maxFPS": 20
	}
}

D-Link ip camera (932L)

Works on Mac Mini core i5, Raspberry Pi 3 (with and without omx)

config.json

{
   "name":"D-Link Camera",
   "videoConfig":{
      "source":"-re -f mjpeg -i http://admin:password@10.0.1.101/mjpeg.cgi  -i http://admin:password@10.0.1.101/audio.cgi",
      "stillImageSource":"-f mjpeg -i http://admin:password@10.0.1.101/mjpeg.cgi",
      "maxStreams":2,
      "maxWidth":640,
      "maxHeight":480,
      "maxFPS":30
   }
},

D-Link ip camera (934L)

Tested on Raspberry Pi 3 (with omx)

config.json

{
	"name": "D-Link Camera",
	"videoConfig": {
		"source": "-re -f mjpeg -i http://admin:password@localip:port/video.cgi",
		"stillImageSource": "-f mjpeg -i http://admin:password@localip:port/image/jpeg.cgi",
		"maxStreams": 2,
		"maxWidth": 640,
		"maxHeight": 480,
		"maxFPS": 20
	}
}

D-Link ip camera (936L)

Works on Raspberry Pi 3 (only with omx)

config.json

{
   "name":"D-Link Camera",
   "videoConfig":{
      "source":"-rtsp_transport tcp -i rtsp://admin:password@10.0.1.101:554/play1.sdp",
      "stillImageSource":"-i http://admin:password@10.0.1.101/image/jpeg.cgi",
      "maxStreams":2,
      "maxWidth":1280,
      "maxHeight":720,
      "maxFPS":30,
      "vcodec": "h264_omx"
   }
},

D-Link ip camera (DCS-2332L/DCS-2330L)

Works for both DCS-2332L and DCS2330L on Mac Mini late 2009 (MacOS El Capitan 10.11.6). The video profiles for the cameras are set as below in the web interface.

Video profile 1

  • H.264
  • Frame size/view window area 1280x720
  • Max frame rate 25
  • Video quality fixed/excellent

Video profile 2

  • JPEG
  • Frame size/view window area 1280x720
  • Max frame rate 25
  • Video quality fixed/good

config.json

{
   "name":"D-Link Camera",
   "videoConfig":{
   "source": "-re -i http://user:password@192.168.0.1/video2.mjpg",
                "stillImageSource": "-i http://user:password@192.168.0.1/image/jpeg.cgi?profileid=1",
                "maxStreams": 2,
                "maxWidth": 1280,
                "maxHeight": 720,
                "maxFPS": 30
   }
},

Generic Chinese DVR (Anran DVR)

This works perfectly with a properly powered computer (my Mac mini i5). I am also having the DVR send motion emails to the smtpsensor plugin. This triggers a motion sensor for the area and immediately sends a homekit notification with a clip from the camera.

DVR system: https://www.amazon.com/ANRAN-Detection-Surveillance-Security-Recorder/dp/B00JUPFVQE/ref=sr_1_3?ie=UTF8&qid=1485448120&sr=8-3&keywords=anran+dvr

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Outside Front",
         "videoConfig":{
            "source":"-re -i rtsp://10.0.1.93:554/user=admin&password=XXXXXX&channel=1&stream=0.sdp?real_stream--rtp-caching=100",
            "stillImageSource":"-re -i rtsp://10.0.1.93:554/user=admin&password=XXXXXX&channel=1&stream=1.sdp?real_stream--rtp-caching=100",
            "maxStreams":2,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":50
         }
      },
      {
         "name":"Outside Rear",
         "videoConfig":{
            "source":"-re -i rtsp://10.0.1.93:554/user=admin&password=XXXXXX&channel=2&stream=0.sdp?real_stream--rtp-caching=100",
            "stillImageSource":"-re -i rtsp://10.0.1.93:554/user=admin&password=XXXXXX&channel=2&stream=1.sdp?real_stream--rtp-caching=100",
            "maxStreams":2,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":50
         }
      }
   ]
}

Doorbird Video Doorbell - Full

This is a more complete set of settings for the Doorbird Video Doorbell based on the latest API and specs. The Doorbird video camera is 720p, capable of up to 15fps. Doorbird supports at most one live connection at a time currently. These settings use RTSP for speed / efficiency, but you can switch to HTTP if you prefer, though I wouldn't expect most people to want / need to. RTSP tends to be the standard for IP cameras. I would recommend looking at the homebridge-doorbird plugin as well to enable HomeKit doorbell integration on your Doorbird.

config.json

      {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"Doorbird Camera",
               "videoConfig":{
                  "source":"-re -i rtsp://<username>:<password>@<doorbird_ip>:554/mpeg/media.amp",
                  "stillImageSource":"-i http://<username>:<password>@<doorbird_ip>/bha-api/image.cgi",
                  "maxStreams":1,
                  "maxWidth":1280,
                  "maxHeight":720,
                  "maxFPS":15
               }
            }
         ]
      }

Doorbird Video Doorbell - Basic

This works for me, it's for a Doorbird Video Doorbell, which I think uses the same hardware or at least same connection method as a Axis IP camera.

config.json

      {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"Front Door Camera",
               "videoConfig":{
                  "source":"-re -i http://192.168.1.100:80/bha-api/video.cgi?http-user=username&http-password=password",
                  "maxStreams":2,
                  "maxWidth":640,
                  "maxHeight":480,
                  "maxFPS":3
               }
            }
         ]
      }

Raspberry PI 2 ( Jessie ) and Vivotek IP Camera ( CC-8130 )

To resolve playback issues I had to use the OMX fork to get the PI 2 and FFMPEG to work more or less reliably. https://github.com/legotheboss/homebridge-camera-ffmpeg-omx

Camera Settings

the settings for Media->Video->Stream 2 to
  JPEG
  Frame Size 1280x800
  Maximum frame rate 30
  Video Quality: Fixed
  Video Quality: Excellent
  Maximum bit rate 40 Mbps

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Office Camera",
         "videoConfig":{
            "source":"-re -i http://login:password@192.168.1.98/video2.mjpg",
            "stillImageSource":"-f mjpeg -i http://login:password@192.168.1.98/cgi-bin/viewer/video.jpg",
            "maxStreams":2,
            "maxWidth":1920,
            "maxHeight":1080,
            "maxFPS":30
         }
      }
   ]
}

Raspberry PI 2 ( Jessie ) and IP Webcam running on an older Samsung Smartphone

To resolve playback issues I had to use the OMX fork to get the PI 2 and FFMPEG to work more or less reliably. https://github.com/legotheboss/homebridge-camera-ffmpeg-omx

Camera Settings

Video Resolution: 1920x1080
Photo Resolution: 2048x1152

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Front Porch Camera",
         "videoConfig":{
            "source":"-f mjpeg -i http://alice:8080/video",
            "stillImageSource":"-i http://alice:8080/shot.jpg",
            "maxStreams":2,
            "maxWidth":1920,
            "maxHeight":1080,
            "maxFPS":30
         }
      }
   ]
}

Raspberry PI 3 and Samsung SNH-P6410BN - Samsung SmartCam (firmware 1.08)

I had to use the OMX fork to get the PI 3 and FFMPEG to work more or less reliably. https://github.com/legotheboss/homebridge-camera-ffmpeg-omx

Camera Settings

I disabled WDR on the camera via the iOS app to get better frame rates at higher quality for my BlueIris setup using profile 5.

rtsp://username:password@IPAddress:554/profile5/media.smp

For the PI 3 I ended up using profile 2.

rtsp://username:password@IPAddress:554/profile2/media.smp

If you don't use the HD quality profile 5 or don't need/want higher frame rates when using it then you can experiment with WDR ON or OFF for your setup.

There are also other profiles to try: rtsp://username:password@IPAddress:554/profile3/media.smp rtsp://username:password@IPAddress:554/profile4/media.smp rtsp://username:password@IPAddress:554/profile6/media.smp

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"CamNameHere",
         "videoConfig":{
            "source":"-re -i rtsp://username:password@ipaddress:554/profile2/media.smp",
            "maxStreams":2,
            "maxWidth":640,
            "maxHeight":360,
            "maxFPS":15
         }
      }
   ]
}

Foscam IQ200 cameras

Working through RTSP

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Camera",
         "videoConfig":{
            "source":"-re -i rtsp://username:password@192.168.31.51:88/videoMain",
            "stillImageSource":"-i http://username:password@192.168.31.51:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=username&pwd=password&",
            "maxStreams":2,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":30
         }
      }
   ]
}

Foscam R2

Working through RTSP

{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "Camera",
      "videoConfig": {
      	"source": "-re -i rtsp://user:pass@10.0.1.132:47082/videoMain",
        "stillImageSource": "-i http://10.0.1.132:47082/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=user&pwd=pass&",
      	"maxStreams": 2,
      	"maxWidth": 1280,
      	"maxHeight": 720,
      	"maxFPS": 30
      	}
      } ] }

Foscam FI8910W

Streaming via http

{
  "platform": "Camera-ffmpeg",
  "cameras": [
{
      "name": "Camera",
      "videoConfig": {
      	"source": "-re -i http://user:pass@10.0.1.131:8090/videostream.asf?user=user&pwd=pass&resolution=320x240",
        "stillImageSource": "-i http://user:pass@10.0.1.131:8090/snapshot.jpg?user=user&pwd=pass&strm=0",
      	"maxStreams": 2,
      	"maxWidth": 1280,
      	"maxHeight": 720,
      	"maxFPS": 30
      }
    } ] }

Foscam FI9900EP / FI9826P

Working through RTSP on RaspberryPi

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Camera",
         "videoConfig":{
            "source":"-rtsp_transport tcp -re -i rtsp://username:password@XXX.XXX.XXX.XXX:port/videoSub",
            "stillImageSource":"-i http://username:password@XXX.XXX.XXX.XXX:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=username&pwd=password",
            "maxStreams": 2,
            "maxWidth": 1280,
            "maxHeight": 720,
            "maxFPS": 10,
            "maxBitrate": 300,
            "vcodec": "h264_omx",
            "audio": false,
            "packetSize": 1316,
            "debug": false
         }
      }
   ]
}

Notes:

  • Replace XXX.XXX.XXX.XXX:port with the IP Address and port, ie: 192.168.0.10:88
  • For the source, use either “videoSub” or “videoMain” to select the sub or main stream
  • Runs smoothly on a RaspberryPi 2 Model B or RaspberryPi 3 Model B+, with the MPEG-omx codec enabled
  • Without the “-rtsp_transport tcp”, the live feed stutters, so make sure it’s added

Pelco cameras

Working through RTSP

Pelco cameras have two streams rtsp//camera-ip/stream1 and rtsp//camera-ip/stream2 In my example below I use a Sarix Pro IBP519 and use the second stream from the camera. I have configured the stream to be 640x480 and 12ips but in the config.json you see that I use 30ips and this is that HomeBridge working this way. I took my second camera IME219 and to get the jpeg to work in this I needed to change the stillImageSource to be -f mjpeg -i http://192.168.5.33/jpeg

config.json

      {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"Baksidan",
               "videoConfig":{
                  "source":"-re -i rtsp://192.168.5.34/stream2",
                  "stillImageSource":"-i http://192.168.5.34/jpeg",
                  "maxStreams":2,
                  "maxWidth":640,
                  "maxHeight":480,
                  "maxFPS":30
               }
            }
         ]
      }

Y-cam Cameras

Working through RTSP

This applies to the Y-Cam Cube HD1080 & Y-Cam Bullet HD1080. These are a few years old, not the current generation. These cameras have 3 Stream types; Primary (Stream "live/0"), Secondary (Stream "live/1"), and Mobile Stream (Stream "live/2"). The Primary has higher resolution(image size) options. The mobile is designed for streaming with low-bandwidth. I have my configuration setup to use the Primary stream at 1920x1080, 18 fps, MJPEG & JPEG Snapshot Quality set to 90. I enabled authentication, but this can be disabled. For the Preview image (stillImageSource) to work, I had to add the "-f mjpeg" to the stream. Away from home, I get very good image/video quality.'

It may be worth mentioning, there are several streams available coming from the Y-Cam. This is by default and they are all on all the time. I tested them all, and had better image quality away from home using the RTSP MJPEG stream.

  • RTSP H.264 stream: rtsp://ip_address/live/0/h264.sdp
  • RTSP MPEG4 stream: rtsp://ip_address/live/0/mpeg4.sdp
  • RTSP MJPEG stream: rtsp://ip_address/live/0/mjpeg.sdp
  • RTSP audio stream: rtsp://ip_address/live/0/audio.sdp
  • HTTP M3U8 stream: http://ip_address/live/0/h264.m3u8
  • HTTP MJPEG stream: http://ip_address/live/0/mjpeg.jpg
  • HTTP ASF stream: http://ip_address/live/0/mpeg4.asf
  • HTTP snapshot image: http://ip_address/live/0/jpeg.jpg

config.json

      {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"Y-Cam",
               "videoConfig":{
                  "source":"-rtsp_transport tcp -re -i rtsp://user:pass@ip:554/live/0/mjpeg.sdp",
                  "stillImageSource":"-f mjpeg -i http://user:pass@ip:554/live/0/mjpeg.jpg",
                  "maxStreams":2,
                  "maxWidth":1920,
                  "maxHeight":1080,
                  "maxFPS":30
               }
            }
         ]
      }

Xiaomi Xiaofang (Small White Square) with Raspberry Pi 3 Model B

Note: I applied Fang-Hacks to the camera to enable the RTSP stream.

I also reduced the RTSP output to 720p which is helpful when your Wi-Fi link is not great.

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Camera 1",
         "videoConfig":{
            "source":"-rtsp_transport tcp -i rtsp://ip-address/unicast",
            "stillImageSource":"-i rtsp://ip-address/unicast -vframes 1 -r 1",
            "maxStreams":2,
            "maxWidth":720,
            "maxHeight":480,
            "maxFPS":10,
            "vcodec":"h264_omx"
         }
      }
   ]
}

Xiaomi Dafang with Raspberry Pi 3 Model B

Note: Dafang-Hacks Enable the RTSP stream.

Reduced the RTSP output to 720p which is helpful when your Wi-Fi link is not great. Remove the "-rtsp_transport tcp" if you got FFMpeg Zombie's

I run this config for my 3 Cams.

config.json

{
   "platform":"Camera-ffmpeg",
   "cameras":[
      {
         "name":"Camera 1",
         "videoConfig":{
            "source":"-rtsp_transport tcp -i rtsp://ip-address/unicast",
            "stillImageSource":"-rtsp_transport tcp -i rtsp://ip-address/unicast -vframes 1 -r 1",
            "maxStreams":5,
            "maxWidth":1280,
            "maxHeight":720,
            "maxFPS":25,
            "vcodec":"h264_omx"
         }
      }
   ]
}

Wyzecam V1 with Raspberry Pi 3 Model B Rev 1.2

Replica of the Xiaomi Xiaofang (Small White Square)

Note: I used the homebridge-camera-ffmpeg-omx plugin (https://github.com/legotheboss/homebridge-camera-ffmpeg-omx) along with OpenIPC v0.2.4 for Wyze V1 (https://github.com/openipcamera/openipc-firmware) which is forked from Fang-Hacks(https://github.com/samtap/fang-hacks)

The rest of the config.json file is similar to the above Xioami Xiaofang config.json

config.json

{
  "platform": "Camera-ffmpeg-omx",
  "cameras": [
    {
      "name": "Garage Camera",
      "videoConfig": {
      	"source": "-re -i rtsp://192.168.2.128/unicast",
        "stillImageSource": "-i rtsp://192.168.2.128/unicast -vframes 1 -r 1",
      	"maxStreams": 2,
      	"maxWidth": 1920,
      	"maxHeight": 1080,
      	"maxFPS": 30
      }
    }
  ]
}

Raspberry PI Zero W ( Jessie ) and official CAMERA MODULE V2

I had to build ffmpeg with "--enable-libx264" to be able to use the "-tune zerolatency" from ffmpeg.js, and with "--enable-omx" and "--enable-omx-rpi" to use the GPU encoding

I had to remove from the homebridge-camera-ffmpeg code (ffmpeg.js) the resolution and scale for stillImage and videoStream to switch back to GPU encoding, and I now get a decent 10~20 FPS with pretty good video quality and ffmpeg using ~12% CPU on the pi zero

Still image sometimes don't refresh in homekit App : Need to reboot the iPhone to get it back ...

config.json (credits @GeorgViehoever )

      {
        "platform": "Camera-ffmpeg",
        "cameras": [
          {
            "name": "piCam",
            "uploader": false,
            "videoConfig": {
                "source": "-re -f video4linux2 -i /dev/video0",
                "stillImageSource": "-re -f video4linux2 -ss 0.9 -i /dev/video0 -vframes 1",
                "maxStreams": 2,
                "maxWidth": 1920,
                "maxHeight": 1080,
                "maxFPS": 30,
                "vcodec": "h264_omx"
            }
          }
        ]
      }

IeGeek IP camera with Raspberry Pi 3 Model B

You can also use "rtsp://ip-address/11" for HQ-Stream.

config.json

		{
			"platform": "Camera-ffmpeg",
			"cameras": [
			{
				"name": "Camera",
				"videoConfig": {
				"source": "-rtsp_transport tcp -re -i rtsp://ip-address/12",
				"stillImageSource": "-i http://username:password@ip-address/tmpfs/auto.jpg",
				"maxStreams": 2,
				"maxWidth": 640,
				"maxHeight": 352,
				"maxFPS": 5,
				"vcodec": "h264_omx"
					}
			}
			]
		}

DBPOWER MEYE-155303-FBACE IPCAM with Raspberry Pi 3 Model B

No rtsp streams available - all via MJPEG...

config.json

     {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"DBPower",
               "videoConfig":{
                  "source":"-re -f mjpeg -i http://ip-address:81/videostream.cgi?user=[USER]&pwd=[PASSWORD]",
                  "stillImageSource":"-i http://ip-address:81/snapshot.cgi?user=[USER]&pwd=[PASSWORD]",
                  "maxStreams":2,
                  "maxWidth":640,
                  "maxHeight":480,
                  "maxFPS":16,
                  "vcodec":"h264_omx"
               }
            }
         ]
      }

Maygion H264 IPCam (Software Version: H.264 6.40) with Raspberry Pi 3 Model B

MPEG Snapshot & RTSP Stream

config.json

     {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
               "name":"Maygion",
               "videoConfig":{
                  "source":"-re -i rtsp://[USER]:[PASSWORD]@ip-address:81/videostream.cgi",
                  "stillImageSource":"-i http://ip-address:81/snapshot.cgi?user=[USER]&pwd=[PASSWORD]",
                  "maxStreams":2,
                  "maxWidth":1280,
                  "maxHeight":720,
                  "maxFPS":16,
                  "vcodec":"h264_omx"
               }
            }
         ]
      }

Axis M3024-L with Raspberry Pi 3 Model B

config.json

     {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
                "name": "Axis M3024-L",
                "videoConfig": {
                  "source": "-rtsp_transport tcp -i rtsp://user:password@192.168.100.100:554/axis-media/media.amp?streamprofile=Media?tcp",
                  "stillImageSource": "-i http://user:password@192.168.100.100/axis-cgi/jpg/image.cgi",
                  "maxStreams": 3,
                  "maxWidth": 1920,
                  "maxHeight": 1080,
                  "maxFPS": 30,
                  "vcodec":"h264_omx"
                }
            }
         ]
      }

Mobotix M24 with Raspberry Pi 3 Model B

config.json

     {
         "platform":"Camera-ffmpeg",
         "cameras":[
            {
                "name": "Mobotix M24",
                "videoConfig": {
                  "source": "-f mxg -i http://user:password@192.168.100.100/control/faststream.jpg?stream=MxPEG",
                  "stillImageSource": "-i http://user:password@192.168.100.100/cgi-bin/image.jpg",
                  "maxStreams": 3,
                  "maxWidth": 1920,
                  "maxHeight": 1080,
                  "maxFPS": 30
                }
            }
         ]
      }

Logitech HD Pro Webcam C920

macOS (High Sierra), ffmpeg compiled through macports. Demonstrates use of avfoundation stream. I had to limit the video stream size and frame rate otherwise ffmpeg throws an input/output error.

config.json

	"platform": "Camera-ffmpeg",
		"cameras": [
		{
			"name": "macCam",
			"uploader": true,
			"videoConfig": {
				"source": "-re -f avfoundation -video_size 640x480 -framerate 30 -i 0",
				"stillImageSource": "-re -f avfoundation -video_size 640x480 -framerate 30 -ss 0.9 -i 0 -vframes 1",
				"maxStreams": 2,
				"maxWidth": 640,
				"maxHeight": 480,
				"maxFPS": 30,
				"vcodec": "h264",
				"debug": true
			}
		}
		]

Logitech HD Pro Webcam C920 w/ Raspberry Pi

I set up a Rpi1 with the camera and stream using v4l2rtspserver. Install a webserver (Apache / I use Lighttpd) and use this command to take a screenshot every 5 seconds from the stream for faster still image captures (also running on the pi1):

ffmpeg -f rtsp -vcodec h264_mmal -i rtsp://127.0.0.1:8555/unicast -vf fps=fps=1/5 -f image2 -update 1 /var/www/html/latest.jpg

Transcoding happens on a Rpi3. You might get everything to work on one Rpi3. Results in delay of about 50-200ms, Video takes ~10 Seconds to start streaming due to h264_mmal and h264_omx, hangs sometimes.

With Audio: v4l2rtspserver -c -Q 512 -s -F 0 -H 720 -W 1280 -I 0.0.0.0 -P 8555 -A 32000 -C 2 /dev/video0,plughw:CARD=C920

Video Only: v4l2rtspserver -c -Q 512 -s -F 0 -H 720 -W 1280 -I 0.0.0.0 -P 8555 /dev/video0

config.json

	"platform": "Camera-ffmpeg",
            "cameras": [
                {
                    "name": "C920",
                    "videoConfig": {
                        "source": "-f rtsp -vcodec h264_mmal -i rtsp://rpi:8555/unicast",
                        "stillImageSource": "-i http://rpi/latest.jpg",
                        "maxStreams": 2,
                        "maxWidth": 1280,
                        "maxHeight": 720,
                        "maxFPS": 30,
                        "maxBitrate": 300,
                        "vcodec": "h264_omx",
                        "audio": true,
                        "packetSize": 188,
                        "debug": false
                    }
                }
            ]

Zoneminder

works pretty well with zoneminder, using the ZM 'nph-zms' urls. Since the stream is already "cleaned up", it's pretty fast starting the stream as well. If you have a decent zoneminder setup (on a beefy server, since you need that anyway for motion detection), just run homebridge-camera-ffmpeg straight there.

config.json

        {
          "name": "Sideyard Cam",
          "videoConfig": {
            "source": "-re -i http://localhost/zm/cgi-bin/nph-zms?mode=jpeg&monitor=<zm monitor id>&scale=100&maxfps=15&buffer=1000&user=<zm user>&pass=<zm passwd>",
            "stillImageSource": "-i http://localhost/zm/cgi-bin/nph-zms?mode=single&monitor=<zm monitor id>&scale=100&user=<zm user>&pass=<zm passwd>",
            "maxStreams": 2,
            "maxWidth": 1280,
            "maxHeight": 720,
            "maxFPS": 15,
            "debug": true
          }
        }

ZNV IP Cam ZDIE-2121W-N3T-A

Product page

Frame Rate:

  • Master: 1280×960@25/30fps, 1280×720@25/30fps
  • Slave: 704×576@25/30fps, 640×480@25/30fps

config.json

{
            "platform": "Camera-ffmpeg",
            "cameras": [
                {
                    "name": "ZNVCam",
                    "uploader": false,
                    "videoConfig": {
                        "source": "-rtsp_transport tcp -re -I rtsp://<admin>:<password>@192.168.0.254:554/ch0_0.h264",
                        "maxStreams": 2,
                        "maxWidth": 1280,
                        "maxHeight": 720,
                        "packetSize": 188,
                        "maxFPS": 30,
                        "maxBitrate": 300,
                        "debug": false
                    }
                }
            ]
        }

SecuritySpy for MacOs

Product page

The great thing about this is, if SecuritySpy supports your camera (which is an extensive list) then you should be able to get it working within Homebridge. So you can add multi-random cameras and only have to worry about getting the config right once.

{
              "platform": "Camera-ffmpeg",
              "cameras": [
			  {
			   	"name": "Security Cam 0",
			    "videoConfig": {
			    "source": "-i http://<SecurityspyUsername>:<SecurityspyPassword>@<SecurityspyIP>:<SecurityspyPort>/++hls?cameraNum=0&codec=h264&width=1280&height=720",
			    "stillImageSource": "-i http://<SecurityspyUsername>:<SecurityspyPassword>@<SecurityspyIP>:<SecurityspyPort>/++image?cameraNum=0&width=480&height=270",
			    "maxStreams": 2,
			    "maxWidth": 1280,
			    "maxHeight": 720,
			    "maxFPS": 30
			   },
 			  {
 			   	"name": "Security Cam 1",
 			    "videoConfig": {
 			    "source": "-i http://<SecurityspyUsername>:<SecurityspyPassword>@<SecurityspyIP>:<SecurityspyPort>/++hls?cameraNum=1&codec=h264&width=1280&height=720",
 			    "stillImageSource": "-i http://<SecurityspyUsername>:<SecurityspyPassword>@<SecurityspyIP>:<SecurityspyPort>/++image?cameraNum=1&width=480&height=270",
 			    "maxStreams": 2,
 			    "maxWidth": 1280,
 			    "maxHeight": 720,
 			    "maxFPS": 30
 			   }
              ]
            }

EZVIZ Mini Plus

Product Page

Great little cams - small, unobtrusive with good pic and great low light / IR capability. Not expensive either. Oh and 5Ghz wifi compatible. Add the cameras in the EZVIZ application downloaded from the app store, so that you can register them on them on your network, and change any settings required. Untick any cloud trials etc etc.

Camera password is the 6 character verification code printed on the back of each camera.

config.json


"platform": "Camera-ffmpeg",
             "cameras": [
                 {
                     "name": "YOUR CAMERA NAME",
                     "videoConfig": {
                         "source": "-rtsp_transport tcp -vcodec h264_mmal -i rtsp://admin:password@nn.nn.nn.nn/Streaming/Channels/1",
                         "stillImageSource": "-i rtsp://admin:password@nn.nn.nn.nn/Streaming/Channels/1/picture",
                         "maxStreams": 2,
                         "maxWidth": 1920,
                         "maxHeight": 1080,
                         "maxBitrate": 500,
                         "vcodec": "h264_omx",
                         "maxFPS": 15,
                         "audio": true,
                         "packetSize": 564
                     }
                 }
You can’t perform that action at this time.