I’m running a Hauppauge PVR150 along an older Primio analog TV-card. I wasn’t really happy with the scripts, which were mentioned on the IVTV-Wiki. In particular I didn’t like how the recording period needed to be entered. So I wipped up this little script. For actual timed copy of the video stream ffmpeg is used in copy mode.
#!/bin/sh
device=/dev/video0
#peak_bitrate=5500000 # for a little better quality
#bitrate=4800000
peak_bitrate=4800000
bitrate=4300000
channel=$1
length=$2
output=$3
if [[ -z "$channel" || -z "$length" || -z "$output" ]] ; then
echo must supply exactly 3 arguments
exit 1;
fi
ivtv-tune -d $device -t europe-west -c $channel
v4l2-ctl -d $device \
-c video_peak_bitrate=$peak_bitrate,video_bitrate=$bitrate,stream_type=3
ffmpeg -y -v 0 -i $device -t $length -vcodec copy \
-acodec copy $output 2>/dev/null
It is executed with three arguments:
rec-tv.sh <channel> <record period> <output file name>
I’m starting the recording with something like this:
echo ./rec-tv-sh E5 1:45:00 recording.mpg | at 22:00
An improvement to be implemented is a mapping from raw channel numbers to sensible program names.
With the peakbitrate/bitrate combination of 4800000/4300000 you get about 2 hours and 10 minutes onto a standard DVD. With the 550000/4800000 combination you get about 1 hour and 50 minutes onto a DVD, while the picture is somewhat better.