I’ve been interested in trying to use the Raspberry Pi to film really long videos which can last for several days. If you set the time flag (-t) for raspivid to 0, then the camera will record until you kill the program. The command is below; note that I’m only filming at 10 frames per second and that the “-n” flag cancels video preview:
raspivid -n -fps 10 -t 0 -o $temp
I tried this, and it works… until your video file reaches 4 GB (I was also recording to an external hard drive). The reason for this in a nutshell, is that a 32 bit computer like the Raspberry Pi can only address about 4 GB of memory. So I started to Google for solutions, and I saw a few potential options, but it looked like a pain to download and recompile the rapsivid program with different settings. So I wrote a short Bash script workaround:
#!/bin/sh increment=0 dir=/media/DRIVE2/filename type=.h264 temp=$dir$increment$type raspivid -n -fps 10 -t 100 -o $temp while true; do raspivid -fps 10 -n -t 3000000 -o $temp increment=$[increment+1] temp=$dir$increment$type done
This script will combine the three variables dir, type and increment into the temp variable which will become the name of the video file. The first video file (in this example) will be called “filename0.h264” and will be located in the “/media/DRIVE2” directory on my external hard drive. Once 50 minutes (or 3000000 milliseconds) of filming at 10 fps have passed, this video is ~4 GB in size. At this point, the increment variable will increase by 1 and I’ll start recording a new video called “filename1.h264”. This will continue indefinitely, until you exit the terminal.
You can save this script in a text file called (for instance) “run_cam.sh”, which you can execute by typing “bash run_cam.sh”. I should mention one caveat here: the Raspberry Pi camera footage takes about a second to calibrate once you start it up, so if you’re interested in writing computer vision software to analyse your footage, I’d recommend ignoring the first 1-2 seconds from each video file.