ffmpeg platform allows you to use any video feed with FFmpeg for motion sensors in Home Assistant.
ffmpeg process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service ffmpeg.start, ffmpeg.stop, ffmpeg.restart.
FFmpeg doesn’t have a motion detection filter, but can use a scene filter to detect a new scene/motion. You can set how much needs to change in order to detect motion with the option ‘changes’, the percent value of change between frames. If you want a really small value for ‘changes’, you can also add a denoise filter.
To add FFmpeg with motion detection to your installation, add the following to your
# Example configuration.yaml entry binary_sensor: - platform: ffmpeg_motion input: FFMPEG_SUPPORTED_INPUT
- input (Required): An FFmpeg-compatible input file, stream, or feed.
- name (Optional): Override the name of your camera for the frontend.
- initial_state (Optional): Start
ffmpegwith Home Assistant. Defaults to
- changes (Optional): How much needs to change between two frames to detect it as motion (a lower value is more sensitive). Defaults to 10%.
- reset (Optional): The time to reset the state after no new motion is detected. Defaults to 20 seconds.
- repeat (Optional): How many events need to be detected in repeat_time in order to trigger a motion. Defaults to 0 repeats (deactivated).
- repeat_time (Optional): The span of time repeat events need to occur in before triggering a motion. Defaults to 0 seconds (deactivated).
- extra_arguments (Optional): Extra options to pass to
ffmpeg, e.g. video denoise filtering.
To experiment with values (changes/100 is the scene value in
$ ffmpeg -i YOUR_INPUT -an -filter:v select=gt(scene\,0.1) -f framemd5 -
If you are running into trouble with this sensor, please refer to the troubleshooting section.
- Use motion only in a custom area with crop filter:
extra_arguments: -filter:v "crop=100:100:12:34"