One think I have wanted to figure out for a along time is how to +run vlc from cron to do recording of video streams on the net. The +task is trivial with mplayer, but I do not really trust the security +of mplayer (it crashes too often on strange input), and thus prefer +vlc. I finally found a way to do it today. I spent an hour or so +searching the web for recipes and reading the documentation. The +hardest part was to get rid of the GUI window, but after finding the +dummy interface, the command line finally presented itself:
+ ++ +URL=http://www.ping.uio.no/video/rms-oslo_2009.ogg +SAVEFILE=rms.ogg +DISPLAY= vlc -q $URL \ + --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \ + --intf=dummy
The command stream the URL and store it in the SAVEFILE by +duplicating the output stream to "nodisplay" and the file, using the +dummy interface. The dummy interface and the nodisplay output make +sure no X interface is needed.
+ +The cron job then need to start this job with the appropriate URL +and file name to save, sleep for the duration wanted, and then kill +the vlc process with SIGTERM. Here is a complete script +vlc-record to use from at or cron:
+ ++#!/bin/sh +set -e +URL="$1" +SAVEFILE="$2" +DURATION="$3" +DISPLAY= vlc -q "$URL" \ + --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \ + --intf=dummy < /dev/null > /dev/null 2>&1 & +pid=$! +sleep $DURATION +kill $pid +wait $pid