I’ve been taking my GoPro to Sunday Morning Football (as it is known) for a while now, so I figured I’d automate the process of importing the footage (moving it from microSD) and combining it into one file (GoPro splits recordings by default).
So I have the following script:
#!/bin/bash
GOPRO="/tmp/gopro"
DATE="$(date +%Y-%m-%d)"
VIDEO_BASE="/home/robert/mounts/storage/video/unsorted"
VIDEO_DEST="$VIDEO_BASE/$DATE"
if [ -e $GOPRO ]; then
echo "Copying..."
rsync -aP --info=progress2 --remove-source-files --include='*.MP4' $GOPRO/DCIM/100GOPRO/ $VIDEO_DEST/
echo "Joining..."
cd $VIDEO_DEST
#cd $GOPRO/DCIM/100GOPRO/
for file in `ls *.MP4`; do echo "file '$file'" >> stitch.txt; done
#RECORD_DATE="$(ffprobe -v quiet `ls *.MP4 | head -n1` -show_entries stream=index,codec_type:stream_tags=creation_time:format_tags=creation_time | grep creation_time | head -n1| cut -d '=' -f 2| cut -d ' ' -f1)"
# new format:
RECORD_DATE="$(ffprobe -v quiet `ls *.MP4 | head -n1` -show_entries stream=index,codec_type:stream_tags=creation_time:format_tags=creation_time | grep creation_time | head -n1| cut -d '=' -f 2| cut -d ' ' -f1| cut -d 'T' -f1)"
#echo "$RECORD_DATE"
ffmpeg -y -f concat -i stitch.txt -c copy $RECORD_DATE.mp4
else
echo "GoPro microSD not mounted?"
fi
Assumptions:
- the microSD is already mounted before running (under
/tmp/gopro
) – I had considered automating this, but I figured running a script in response to insertion of removable media was a bad idea; I could add themkdir
andmount
commands here, but since the latter requires root privileges I’d rather not and it is quickly recalled from bash history in any case- the
$VIDEO_BASE
directory is mounted and created (this is pretty stable) - the GoPro won’t number directories higher than
100GOPRO
(eg101GOPRO
)- it possibly would if dealing with eg timelapse, but I am not covering that case - the GoPro will set creation time correctly; so far it has reset to the default date a few times, probably related to battery
- I want to keep the source files around after creation (the script could remove them)
- the
Given the above the script may seem a bit fragile – and it is definitely tightly coupled to my assumptions – but it’s done the job for a few weeks at least, and the commands it was based on have been pretty stable since I started recording football last year.
Pingback: File creation time on ext4 (Linux) – Bertie Baggio's Wonderland