There are plenty of generally accessible webcams. Instead of just tuning in and watching, I wrote some perl scripts to grab pictures at regular intervals and then put them together into time-lapse movies. I’m fond of Madison, Wisconsin, because I grew up there.
- 3 days on Lake Mendota, Madison Wisconsin, from the King Hall webcam
- One year @ 8am, Lake Mendota, Madison Wisconsin, from the King Hall webcam
- 24 hours above Lausanne, Switzerland from the Rue du Valentin Webcam
This Perl script generates a one-day movie from the King Hall, Lake Mendota cam:
#!/usr/bin/perl -w # get_webcam_pics Bill Feiereisen, February 22, 2017 # Put this script in a file ending in .pl For example --> get_webcam_pics.pl # Place it in a new directory. Execute it with ./get_webcam_pics.pl # Patience! It runs for a long time depending on how many pictures and the wait interval # Gets webcam pictures at regular intervals from public webcams and stores # them for later processing into a time-lapse movie. # Downloads from the chosen camera URL with curl. # Creates a sequential filename for each picture and stores in the current directory. # After the main loop calls ffmpeg to generate the movie from stored frames. # You gotta have curl and ffmpeg installed on your system. # You could do the downloading with wget if you don't have curl. # identify script to the terminal. print "get_webcam_pics Bill Feiereisen February 22, 2017\n"; # Here's where this particular cam stores its files. $CAM_URL="http://agwx.soils.wisc.edu/soils-agwx-assets/uwex_agwx/images/webcam/fullsize.jpg"; $CAM_NAME="Lake_Mendota"; # picture counter limit # This is one day at five minute intervals. $ipic_max = 288; #How many pictures? Change to suit. # sleep time $sleep_tics = 300; #This is 300 seconds, five minute interval. Change to suit. # main picture gathering loop for ($ipic = 0; $ipic < $ipic_max; $ipic+=1) { # main loop $picture_name = "$CAM_NAME$ipic.jpg"; # create filename with sequential numbered files print "$picture_name\n"; # print something to the terminal so you know what's happening. system("curl -o $picture_name $CAM_URL;"); # get the picture and store it sleep $sleep_tics; #sleep for a while until the next picture is available. } #end picture gathering loop # make movie with ffmpeg # for this call use 15fps, start with file number 0, code at 1280x800 system("ffmpeg -r 15 -start_number 0 -i $CAM_NAME%d.jpg -s 1280x800 -vcodec libx264 $CAM_NAME.mp4;"); # end of main program exit;