Jump to content

SI-05: HOWTO: Personal Video Recorder

Recommended Posts

Browse: [About the FAQ Forum] [Table of Contents] [FAQs] [Contribute] [SI: Software Installation]


SI-05: HOWTO: Personal Video Recorder


Software Needed:


For watching and recording TV: Freevo

For grabbing TV guide listings: XMLTV

For video-editing: GOPchop and mencoder




If you are like me and have an electricity bill going through the roof you'll be glad to find out that you can save money by doing away with your VCR (and when you don't mind a small screen even with your TV :) ). A computer and TV card are all you need.




For watching and recording TV I use Freevo. It's in 'Contrib' so installing is 'urpmi freevo'. That will take care of all the dependancies.


Ugly hack:

The Freevo version in 'Contrib' is 1.4.1-12mdk and I couldn't get the recording to work. (I use a Hauppauge WinTV PVR 250 and the 'ivtv' driver). However later versions from CVS and the 1.5.0-pre1 worked fine (I haven't used 1.5.0-rc1). So if you use the ivtv driver I suggest you use the freevo 1.5.0 series.


-Just leave the 1.4.1 installation in place and download freevo 1.5.0.


-Untar it and copy the Freevo folder to /usr/local/.


-Edit /etc/freevo/boot_config (FREEVO_HOME="/usr/local/freevo")


-To start the 'good' Freevo version you will have to give the complete path /usr/local/freevo/freevo.


The 'local_conf.py':

This file in you $HOME/.freevo folder contains all the settings and you will have to edit it to get freevo working. This is not easy :(. It took me quite awhile to understand what it was all about so I sugest you take your time with it. I'll post below some of my settings as a pointer, but it will still be difficult.





# ======================================================================

# General freevo settings:

# ======================================================================


AUDIO_DEVICE        = '/dev/dsp'      # e.g.: /dev/dsp0, /dev/audio, /dev/alsa/?

# AUDIO_INPUT_DEVICE  = '/dev/dsp1'     # e.g.: /dev/dsp0, /dev/audio, /dev/alsa/?

# MAJOR_AUDIO_CTRL    = 'VOL'           # Freevo takes control over one audio ctrl

#                                       # 'VOL', 'PCM' 'OGAIN' etc.

CONTROL_ALL_AUDIO   = 0               # Should Freevo take complete control of audio

MAX_VOLUME          = 90              # Set what you want maximum volume level to be.

DEFAULT_VOLUME      = 70              # Set default volume level.

TV_IN_VOLUME        = 90              # Set this to your preferred level 0-100.

VCR_IN_VOLUME       = 70              # If you use different input from TV


START_FULLSCREEN_X  = 0               # Start in fullscreen mode if using x11 or xv.


CONFIRM_SHUTDOWN    = 0               # ask before shutdow






# ======================================================================

# Plugins:

# ======================================================================




# Use this ivtv_record instead if you have an ivtv based card (PVR-250/350)

# and want freevo to do everthing for you.  TV_SETTINGS must be set

# correctly.  To use you need the following two lines in local_conf.py:


plugin_record = plugin.activate('tv.ivtv_record')


MPLAYER_ARGS = { 'ivtv' : '-cache 5000'}


TV_SETTINGS  = 'pal television europe-west /dev/video0'

TV_VCR_SETTINGS = 'pal television europe-west /dev/video0'


# if using the persitant record_server

TV_RECORD_SCHEDULE = '%s/record_schedule.xml' % FREEVO_CACHEDIR


TV_RECORD_SERVER_IP = 'localhost'




# Settings for ivtv based cards such as the WinTV PVR-250/350.


# XXX TODO: Add descriptions and valid settings for each option.

# bitrate in bps

# stream type

# Options are: 0 (mpeg2_ps), 1 (mpeg2_ts), 2 (mpeg1), 3 (mpeg2_pes_av),

#              5 (mpeg2_pes_v), 7 (mpeg2_pes_a), 10 (dvd)



#     'input'         : 4,

     'resolution'    : '720x576',

     'aspect'        : 2,

     'audio_bitmask' : 233,

     'bframes'       : 3,

     'bitrate_mode'  : 1,

     'bitrate'       : 4000000,

     'bitrate_peak'  : 4000000,

     'dnr_mode'      : 0,

     'dnr_spatial'   : 0,

     'dnr_temporal'  : 0,

     'dnr_type'      : 0,

     'framerate'     : 0,

     'framespergop'  : 15,

     'gop_closure'   : 1,

     'pulldown'      : 0,

     'stream_type'   : 10,












                 desc='TV kaart',







# FREQUENCY_TABLE - This is only used when Freevo changes the channel natively.

# This is only the case if you are using V4L2 and any of the following plugins:

# timeshift, ivtv_record, ivtv_basic_tv.

# For the standard frequancy tables see src/tv/freq.py.  To add your own just

# replace tuner_id in the following example with a valid tuner id (ie: '5' or

# 'BBC1') and a frequency in KHz.  You may have as many entries as you like,

# anything here will simply override a coresponding entry in your standard

# frequency table and you can also have entries here that are not present i

# there.



   '11-'   :  216000,

   '6+'    :  184000,

   '7+'    :  192000,





# The TV_CHANNELS-list can look like this:


TV_CHANNELS = [('1.tvgids.nl', 'Nederland 1', '11-'),

  ('2.tvgids.nl', 'Nederland 2', '6+'),

  ('3.tvgids.nl', 'Nederland 3', '7+'),

  ('4.tvgids.nl', 'RTL 4', '12-'),


These quotes from my local_conf.pyare only a help . Best is to start Freevo from a terminal the first few times and watch the error messages you get. These can help you find a solution more easily.


The Freevo recordserver:

This is a service that is needed to start and end a recording.You can find it in the MCC. However when you start it from there it won't work. (It's the 1.4.1 version). It must be started manually. Just like Freevo, start it the first time from a terminal as root (/usr/local/freevo/freevo recordserver).When it works use 'Alt-F2' (as root).



I have the recordserver on 24/7 now for more then 2 weeks without problems. The same goes for Freevo. It's on one of my 4 desktops and I only shut it down when I exit X.




To get tv listings you need a grabber. Add Thac's RPM's as one of you repositories and do 'urpmi XMLTV'.


To use it open a terminal get the grabber for your country:tv_grab_XX --output /tmp/TV.xml --days X. The --slow option will give you more information (what a movie is about etc), but it's... slow :).


Freevo expects the TV.xml in /tmp


Video editing


There isn't a really good video editor for Linux yet. KdenLive and Avidemux don't work with MPEG2 files and Cinelerra is unstable. The only program usuable for me is GOPchop. I use it to cut commercials and bits at the beginning and the end of a program. There is no RPM that i'm aware of so you have to compile it yourself (./configure-make-make install straightforward stuff)


For compressing a file there is mencoder (urpmi mencoder). The commands I use are :


mencoder *.mpeg -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o outputfile.avi

mencoder *.mpeg -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o outputfile.avi



But if you're making a DVD use of course the MPEG2 file.




It is possible to use Mandrake as a PVR. With the steps I have described you can turn your computer in a television and VCR. I haven't gone into the use of Freevo but it has many nifty features. One of the things I use most is listing a program as 'favorite'. That means Freevo will record the show every time it's on without me having to do anything. The only thing I need now is more time to watch all my recordings :)

Link to comment
Share on other sites

Thanks for the how-to devries!


I was just wondering if you have messed around with twinview? From your guide, it seems that you are watching from your computer screen - I'd like to set it up to use my TV.


Once I get around to it, I'll add it on to this thread... of course if you're JUST using the tv (without a CRT monitor as well) then it should be easy...

Link to comment
Share on other sites

I use twniview (option "clone"). I have a composite cable running from my videocard to the TV, but just for video. Sound is still coming from my PC speakers.


Section "Monitor"

    Identifier "monitor1"

    VendorName "Plug'n Play"

    HorizSync 24-60

    VertRefresh 56-75


    # Sony Vaio C1(X,XS,VE,VN)?

    # 1024x480 @ 85.6 Hz, 48 kHz hsync

    # ModeLine "1024x480"    65.00 1024 1032 1176 1344   480  488  494  563 -hsync -vsync


    # TV fullscreen mode or DVD fullscreen output.

   # 768x576 @ 79 Hz, 50 kHz hsync

   ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630


    # 768x576 @ 100 Hz, 61.6 kHz hsync

   #  ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616



Section "Monitor"

   Identifier "TV"

   HorizSync 30-50

   VertRefresh 60



Section "Device"

    Identifier "device1"

    VendorName "nVidia Corporation"

    BoardName "NVIDIA GeForce4 (generic)"

    Driver "nvidia"

    Option "ConnectedMonitor" "DFP"

#   Option "RenderAccel" "1"

#   Option "NvAgp" "1"

    Option "DPMS"



Section "Screen"

    Identifier "screen1"

    Device "device1"

    Monitor "monitor1"

    DefaultColorDepth 24

    Option "TwinView" "On"

    Option "TVStandard" "PAL-B"

    Option "SecondMonitorHorizSync" "30-50"

    Option "SecondMonitorVertRefresh" "60"

    Option "MetaModes" "1024x768,1024x768;800x600,800x600;640x480,640x480"

    Option "TwinViewOrientation" "Clone"

#   Option "ConnectedMonitor" "CRT,TV"



Hope this helps :)

Link to comment
Share on other sites


  • Create New...