home-assistant.io/source/_components/binary_sensor.ffmpeg_motion.markdown
Jorim Tielemans 5c852edbde More various improvements - letter b (#6990)
* More various fixed - letter b

Adds titles (and make other linkable)
Improved indentation
Reorder configuration keys
Remove empty lines and trailing spaces

* No idea why this happened

* String can't start with *
2018-10-21 17:05:53 +02:00

2.9 KiB

layout title description date sidebar comments sharing footer logo ha_category ha_release redirect_from
page FFmpeg Motion Binary Sensor Instructions on how to integrate an FFmpeg-based motion binary sensor 2016-08-25 08:00 true false true true ffmpeg.png Image Processing 0.27 /components/binary_sensor.ffmpeg/

The ffmpeg platform allows you to use any video feed with FFmpeg for motion sensors in Home Assistant.

If the `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*.

{% linkable_title Motion %}

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.

{% linkable_title Configuration %}

To add FFmpeg with motion detection to your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
binary_sensor:
  - platform: ffmpeg_motion
    input: FFMPEG_SUPPORTED_INPUT

{% configuration %} input: description: An FFmpeg-compatible input file, stream, or feed. required: true type: string name: description: Override the name of your camera for the frontend. required: false type: string initial_state: description: Start ffmpeg with Home Assistant. required: false type: boolean default: true changes: description: How much needs to change between two frames to detect it as motion, value in percentage (a lower value is more sensitive). required: false type: integer default: 10 reset: description: The time to reset the state after no new motion is detected. required: false type: integer default: 20 repeat: description: How many events need to be detected in repeat_time in order to trigger a motion, 0 repeats means deactivated. required: false type: integer default: 0 repeat_time: description: The span of time repeat events need to occur in before triggering a motion, 0 seconds means deactivated. required: false type: integer default: 0 extra_arguments: description: Extra options to pass to ffmpeg, e.g., video denoise filtering. required: false type: string {% endconfiguration %}

To experiment with values (changes/100 is the scene value in ffmpeg):

$ 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.

{% linkable_title Tips %}

extra_arguments: -filter:v "crop=100:100:12:34"