1 <!DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Strict//EN" 
   2         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
   5   <title>Petter Reinholdtsen: Recording video from cron using VLC
</title> 
   6   <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css"> 
  12        <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a> 
  20   <div class=
"title">Recording video from cron using VLC
</div> 
  21   <div class=
"date">2009-
04-
05 10:
00</div> 
  23 <p>One think I have wanted to figure out for a along time is how to
 
  24 run vlc from cron to do recording of video streams on the net.  The
 
  25 task is trivial with mplayer, but I do not really trust the security
 
  26 of mplayer (it crashes too often on strange input), and thus prefer
 
  27 vlc.  I finally found a way to do it today.  I spent an hour or so
 
  28 searching the web for recipes and reading the documentation.  The
 
  29 hardest part was to get rid of the GUI window, but after finding the
 
  30 dummy interface, the command line finally presented itself:
</p> 
  32 <blockquote><pre>URL=http://www.ping.uio.no/video/rms-oslo_2009.ogg
 
  34 DISPLAY= vlc -q $URL \
 
  35   --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \
 
  36   --intf=dummy
</pre></blockquote> 
  38 <p>The command stream the URL and store it in the SAVEFILE by
 
  39 duplicating the output stream to "nodisplay" and the file, using the
 
  40 dummy interface.  The dummy interface and the nodisplay output make
 
  41 sure no X interface is needed.
</p> 
  43 <p>The cron job then need to start this job with the appropriate URL
 
  44 and file name to save, sleep for the duration wanted, and then kill
 
  45 the vlc process with SIGTERM.  Here is a complete script
 
  46 <tt>vlc-record
</tt> to use from 
<tt>at
</tt> or 
<tt>cron
</tt>:
</p> 
  48 <blockquote><pre>#!/bin/sh
 
  53 DISPLAY= vlc -q "$URL" \
 
  54   --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \
 
  55   --intf=dummy < /dev/null 
> /dev/null 
2>&
1 &
 
  59 wait $pid
</pre></blockquote> 
  62   <div class=
"tags">Tags: 
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>, 
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>, 
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
</div> 
  79 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li> 
  81 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li> 
  83 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li> 
  85 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li> 
  87 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li> 
  89 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li> 
  91 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li> 
  93 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li> 
  95 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li> 
  97 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li> 
  99 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
10)
</a></li> 
 106 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li> 
 108 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li> 
 110 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li> 
 112 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li> 
 114 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li> 
 116 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li> 
 118 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li> 
 120 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li> 
 122 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li> 
 124 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li> 
 126 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li> 
 128 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li> 
 135 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li> 
 137 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li> 
 148  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
12)
</a></li> 
 150  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li> 
 152  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li> 
 154  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
10)
</a></li> 
 156  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
42)
</a></li> 
 158  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
50)
</a></li> 
 160  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
71)
</a></li> 
 162  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
1)
</a></li> 
 164  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
11)
</a></li> 
 166  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
5)
</a></li> 
 168  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
8)
</a></li> 
 170  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
4)
</a></li> 
 172  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li> 
 174  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
10)
</a></li> 
 176  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
90)
</a></li> 
 178  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
113)
</a></li> 
 180  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
18)
</a></li> 
 182  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
25)
</a></li> 
 184  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
10)
</a></li> 
 186  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
4)
</a></li> 
 188  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li> 
 190  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
18)
</a></li> 
 192  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
3)
</a></li> 
 194  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
16)
</a></li> 
 196  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
1)
</a></li> 
 198  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
15)
</a></li> 
 200  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
1)
</a></li> 
 202  <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
13)
</a></li>