FFmpeg plugin for Homebridge.
Basic Installation:
- Install this plugin using:
npm install -g --unsafe-perm homebridge-camera-ffmpeg - Edit
config.jsonand add the camera.
Install via Homebridge Config UI X:
- Search for
Camera FFmpegon the plugin screen of the Homebridge UI. - Install the
homebridge-camera-ffmpegand use the form to enter your camera settings.
After restarting Homebridge, each camera you defined will need to be manually paired in the Home app, to do this:
- Open the Home
app on your device. - Tap the Home tab, then tap
. - Tap Add Accessory, and select I Don't Have a Code or Cannot Scan.
- Select the Camera you want to pair.
- Enter the Homebridge PIN, this can be found under the QR code in Homebridge UI or your Homebridge logs, alternatively you can select Use Camera and scan the QR code again.
{
"platform": "Camera-ffmpeg",
"cameras": [
{
"name": "Camera Name",
"videoConfig": {
"source": "-re -i rtsp://myfancy_rtsp_stream",
"stillImageSource": "-i http://faster_still_image_grab_url/this_is_optional.jpg",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 30
}
}
]
}
uploaderenable uploading of snapshots to Google Drive, defaults tofalse. See wiki for more detailed instructions.motionenable a dummy switch and motion sensor to trigger picture notifications in iOS 13, defaults tofalse. See wiki for more detailed instructions.doorbellenable doorbell function for this camera (image notifications). When enabled there will be an additional switch that triggers the doorbell event, automate it to use it with other HomeKit switches, HTTP events etc.manufacturerset manufacturer name for display in the Home appmodelset model for display in the Home appserialNumberset serial number for display in the Home appfirmwareRevisionset firmware revision for display in the Home app
Example with manufacturer, model, serial number and firmware set:
{
"platform": "Camera-ffmpeg",
"cameras": [
{
"name": "Camera Name",
"manufacturer": "ACME, Inc.",
"model": "ABC-123",
"serialNumber": "1234567890",
"firmwareRevision": "1.0",
"videoConfig": {
"source": "-re -i rtsp://myfancy_rtsp_stream",
"stillImageSource": "-i http://faster_still_image_grab_url/this_is_optional.jpg",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 30
}
}
]
}
maxStreamsis the maximum number of streams that will be generated for this camera, default 2maxWidthis the maximum width reported to HomeKit, default1280maxHeightis the maximum height reported to HomeKit, default720maxFPSis the maximum frame rate of the stream, default10minBitrateis the minimum bit rate of the stream in kbit/s, default0maxBitrateis the maximum bit rate of the stream in kbit/s, default300preserveRatiocan be set to eitherWorHwith respective obvious meanings, all other values have no effectvcodecIf you're running on a RPi with the omx version of ffmpeg installed, you can change to the hardware accelerated video codec with this option, defaultlibx264audiocan be set to true to enable audio streaming from camera, defaultfalse.acodecDefault audio codec islibfdk_aacand is enabled in the bundled ffmpeg version.packetSizeIf audio or video is choppy try a smaller value, set to a multiple of 188, default1316vflipFlips the stream vertically, defaultfalsehflipFlips the stream horizontally, defaultfalsemapvideoSelect the stream used for video, default0:0mapaudioSelect the stream used for audio, default0:1videoFilterAllows a custom video filter to be passed to FFmpeg via-vf, defaults toscale=1280:720additionalCommandlineAllows additional of extra command line options to FFmpeg, for example'-loglevel verbose'debugShow the output of ffmpeg in the log, defaultfalse
A somewhat complicated example:
{
"platform": "Camera-ffmpeg",
"cameras": [
{
"name": "Camera Name",
"videoConfig": {
"source": "-re -i rtsp://myfancy_rtsp_stream",
"stillImageSource": "-i http://faster_still_image_grab_url/this_is_optional.jpg",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 30,
"maxBitrate": 200,
"vcodec": "h264_omx",
"audio": false,
"packetSize": 188,
"hflip": true,
"additionalCommandline": "-x264-params intra-refresh=1:bframes=0",
"debug": true
}
}
]
}
videoProcessoris the video processor used to manage videos. eg: ffmpeg (by default) or avconv or /a/path/to/another/ffmpeg. Need to use the same parameters than ffmpeg.
{
"platform": "Camera-ffmpeg",
"videoProcessor": "avconv",
"cameras": [
...
]
}
{
"platform": "Camera-ffmpeg",
"videoProcessor": "/my/own/compiled/ffmpeg",
"cameras": [
...
]
}
interfaceNameselects the IP address of a given network interface. The default is to select the first available, and that may not be the same IP address that ffmpeg will use. A mismatch will cause the iOS device to discard the video stream.
{
"platform": "Camera-ffmpeg",
"interfaceName": "bond0",
"cameras": [
...
]
}
We have started collecting tested configurations in the wiki, so please before raising an issue with your configuration, please check the wiki. Also if you have a working configuration that you would like to share, please add it to the wiki.
https://github.com/KhaosT/homebridge-camera-ffmpeg/wiki
Homebridge Camera FFmpeg was originally created by Khaos Tian.