1

I'm new to Raspberry Pi tinkering and I'm trying to make some slight changes to the Adafruit 'Raspberry Pi Wearable Time Lapse Camera' project.

Instead of the camera taking pictures at a given interval until the slim button is pushed down, I'd like it to record a video for a given duration, then shut itself down. Here is the code I currently have:

# Configurable stuff...
INTERVAL=3        # Time between captures, in seconds
WIDTH=1920             # Image width in pixels
HEIGHT=1080             # Image height in pixels
QUALITY=51             # JPEG image quality (0-100)
DEST=/boot/timelapse   # Destination directory (MUST NOT CONTAIN NUMBERS)
PREFIX=img             # Image prefix (MUST NOT CONTAIN NUMBERS)
HALT=21                # Halt button GPIO pin (other end to GND)
FPS=30                 # FPS of video
DURATION=10            # Duration of video in seconds
LED=5                  # Status LED pin (v2 Pi cam lacks built-in LED)
starttime=0             # Time of last capture (0 = do 1st image immediately)

gpio -g mode $HALT up  # Initialize GPIO states
gpio -g mode $LED  out
mkdir -p $DEST         # Create destination directory (if not present)

# Record video
FRAME=$(($(find $DEST -name "*.h264" -printf %f\\n | sed 's/^[^1-9]*//g' | sort -rn | head -1 | sed 's/[^0-9]//g') + 1))
OUTFILE2=`printf "$DEST/$PREFIX%05d.h264" $FRAME`
raspivid -n -t $DURATION*1000 -w $WIDTH -h $HEIGHT -fps $FPS -o $OUTFILE2
starttime=$(date +%s)

while :         # Lasts as long as duration + 10 seconds
do
        currenttime=$(date +%s)
        if [ $(($currenttime-$starttime)) -ge $DURATION+10 ]; then
                gpio -g write $LED 1
                shutdown -h now
        fi
done

However the Raspberry Pi never shuts itself down, and when I have to manually turn it off I'm left with a 1 KB h264 file that causes VLC to spaz out.

0

It looks like timing the shut off is unnecessary, the shutdown command will wait until the raspivid command is finished.

So this code will work:

# Configurable stuff...
INTERVAL=3        # Time between captures, in seconds
WIDTH=1920             # Image width in pixels
HEIGHT=1080             # Image height in pixels
QUALITY=51             # JPEG image quality (0-100)
DEST=/boot/timelapse   # Destination directory (MUST NOT CONTAIN NUMBERS)
PREFIX=img             # Image prefix (MUST NOT CONTAIN NUMBERS)
HALT=21                # Halt button GPIO pin (other end to GND)
FPS=30                 # FPS of video
DURATION=30            # Duration of video in seconds
DURATIONMS=60000           # Duration of video in seconds
LED=5                  # Status LED pin (v2 Pi cam lacks built-in LED)
starttime=0             # Time of last capture (0 = do 1st image immediately)

gpio -g mode $HALT up  # Initialize GPIO states
gpio -g mode $LED  out
mkdir -p $DEST         # Create destination directory (if not present)

# Record video
FRAME=$(($(find $DEST -name "*.h264" -printf %f\\n | sed 's/^[^1-9]*//g' | sort -rn | head -1 | sed 's/[^0-9]//g') + 1))
OUTFILE2=`printf "$DEST/$PREFIX%05d.h264" $FRAME`
starttime=$(date +%s)
raspivid -n -t $DURATIONMS -w $WIDTH -h $HEIGHT -fps $FPS -o $OUTFILE2
gpio -g write $LED 1
shutdown -h now

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.