motion email thumbnails @ kp | Sunday, Mar 17, 2019 | 2 minutes read | Update at Sunday, Mar 17, 2019

generating thumbnails from video to use for email alerts

I’m using motion to watch an RTSP camera I obtained from Aliexpress for about $25. It has wifi and ethernet connections.

With the on_event_end parameter and a script, I was able to get motion to send emails of nicely generated thumbnails:

#!/bin/bash

# Set this to your email address.
export EMAILADDRESS="PLACE@YOUREMAIL.HERE"

export FILEPATH="${@}"
if ! [ -f ${FILEPATH} ]; then
        logger -t motion_email "filepath ${FILEPATH} does not exist"
        exit 0
fi
export MOVIE=$(basename "$FILEPATH")
if [ -z "${MOVIE}" ]; then
		# sometimes motion runs an event without the argument. let's not run in that case.
        exit 0
fi
logger -t motion_email Begin email thumbnail processing..
# this command will produce a single image that contains nine keyframes in 3x3 tile
ffmpeg -ss 1 -skip_frame nokey -i $FILEPATH -vf 'scale=128:72,tile=3x3' -an -vsync 0 $FILEPATH.best.%03d.jpg
logger -t motion_email Thumbnail generated.

# Build list of attachments for Mutt.
export ATTACHMENTS=""
for i in $FILEPATH.best.*.jpg ; do
        export ATTACHMENTS="${ATTACHMENTS} -a $i" # mutt
done

echo 'Security alert detected.' | mutt -F /etc/muttrc -s "Alert!" ${EMAILADDRESS} -a "$FILEPATH" ${ATTACHMENTS}
for i in $FILEPATH.best.*.jpg ; do
        rm -v ${i}
done

## delete videos older than 30d
find /camera/ffmpeg/cam1 -maxdepth 1 -name "*.avi" -type f -mtime +30 -delete

In /etc/muttrc we need the following:

# do not store local copy. this allows the use of /dev/null as homedir for motion  user.
set copy = no
# use starttls
set ssl_starttls=yes
set ssl_force_tls=yes
# set from address
set from = "REPLACE@FROMADDRESS.HERE"
set realname = "Inigo Montoya"
set smtp_url = "smtp://USERNAME@DOMAIN.TLD@mail.server.com:587/"
set smtp_pass = "examplepassword"
# do not verify certificate
set ssl_verify_dates = "no"
# use plaintext login
set smtp_authenticators="plain"
# trusted certificate path
set certificate_file="/etc/mutt_certificates"

I manually used mutt to login to my mailserver and accepted the certificate. Then I copied the .mutt_certificates file to /etc/mutt_certificates.

© 2022 tripleback

Powered by Hugo with theme Dream.