Site Index:
Contents
Intro
Here you will find info for all kind of plugins for watching and recording TV. By default the Mplayer TV plugin is loaded for watching TV. To use other applications you will need to remove this plugin and add other plugins.
TvTime
This plugin allows you to use TvTime to watch tv instead of mplayer. It has a better OSD than mplayer and tends to have better audio sync, but at the moment it is working only with tv cards that are v4l or v4l2 compatible, so you cannot use it with budget DVB cards.
To use it put the following into your local_conf.py:
plugin.remove('tv.mplayer') plugin.activate('tv.tvtime')
PLEASE NOTE: the first time you run tvtime. it will attempt to flip through all of your channels be patient it is setting up some of its own internal data. After the flip through you can edit $HOME/.tvtime/stationlist.xml so that you can see your station names from freevo's TV_CHANNEL variable in your tvtime OSD. There is a script in freevo/src/helpers to build this file.
Xine
This plugin is an alternative for people who have a budget DVB card. Currently it is only working with DVB. It also has a better OSD then mplayer and tends to have a better audio sync. But for some reason xine needs the teletext pids in its channels.conf, whereas mplayer just needs video and audio pids. So make sure to provide this additional information.
To use xine for watching tv put the following into your local_conf.py:
plugin.remove('tv.mplayer') plugin.activate('tv.xine')
IVTV Xine
The IVTV Xine plugin is for analogue ivtv cards. It allows users to pause live TV.
To use ivtv_xine for watching TV put the following into your local_conf.py
plugin.remove('tv.mplayer') plugin.activate('tv.ivtv_xine_tv') plugin.remove('tv.generic_record') plugin_record = plugin.activate('tv.ivtv_record')
You'll also need to adjust your VIDEO_GROUPS. Here's an example with a single tuner card;
TV_VIDEO_GROUPS = [ VideoGroup(vdev = '/dev/video0', adev = '/dev/adsp', input_type = 'tuner', input_num = 0, tuner_norm = CONF.tv, tuner_chanlist = CONF.chanlist, desc = 'NTL Cable', group_type = 'ivtv', record_group = None) ]
Livepause
This plugin supersedes the DVBStreamer Live Pause plugin below.
Features of this plugin include:
- Supports several media players
- vlc (Preferred)
- xine
- mplayer
- Supports DVBStreamer and HDHomeRun for stream capture.
- Instant recording of the currently view program.
- Skinable graphical OSD for those running under X11 (with kaa.display installed).
- Improve information on stream position, now displayed as time at the start of the buffer, currently viewing time, time at the end of the buffer.
- Subtitle support (vlc and xine only)
- Uses standard file functions for ring buffer, no more mmap.
plugin.remove('tv.mplayer') plugin.activate('tv.livepause') LIVE_PAUSE2_BUFFER_SIZE= 2048 # Size of the live buffer in MB. (Default 2GB) LIVE_PAUSE2_BUFFER_PATH='/tmp/freevo/live.buf' # Location of the live buffer.
Set up of the video groups is the same as for the DVBStreamer plugin below, and for recording the tv.dvbstreamer.record plugin should still be used. For example on a system with a single DVB/ATSC adapter the VideoGroup would be:
TV_VIDEO_GROUPS = [ # Use this group for watching tv VideoGroup(vdev='0', group_type='dvb', desc='Watching Video Group', ) ]
For an HDHomeRun this becomes:
TV_VIDEO_GROUPS = [ # Use this group for watching tv VideoGroup(vdev='<HDHomeRun ID>:<Tuner>', group_type='hdhomerun', desc='Watching Video Group', ) ]
NOTE As of 1.8.4 (latest version in svn) you will need the livepause application available from the DVBStreamer sourceforge site installed. Once you have install this you will also need to re-run freevo setup to make sure that livepause is added to the list of known applications.
Configure Livepause to use a RAM buffer instead of a HDD buffer
If you have a system with a slow HDD and/or are experiencing video and audio playback errors (perhaps while recording when watching live TV), you may need to buffer the Livepause stream to RAM rather than HDD.
Below is one way to achieve this.
- Create a new tmpfs volume. "/tmp/ramdisk" was chosen for illustration only. Modify this to your preferred location.
mkdir -p /tmp/ramdisk mount -t tmpfs -o size=512M,mode=0777 tmpfs /tmp/ramdisk
NOTE Ensure you have sufficient RAM to accommodate the size of the tmpfs you have chosen (512M in this example). Roughly 2G will provide 1 hour of buffering, 1G about 30 minutes of buffering and 500M about 15 minutes of buffering (all at SD). You will be limited by how much RAM you have installed and by how much RAM you have free. To see your RAM usage type free at the command prompt.
To restore the RAM volume every time your PC boots, add the following line to your /etc/fstab file:
tmpfs /tmp/ramdisk tmpfs size=512M,mode=0777 0 0
NOTE Mode 0777 will give full access to this volume to every user on your system. So change this to suit your set up.
With the RAM volume created, you will need to point Livepause to this volume. Modify the Livepause configuration in local_conf.py as follows:
plugin.remove('tv.mplayer') plugin.activate('tv.livepause') LIVE_PAUSE2_BUFFER_SIZE= 500 # Size of the live buffer in MB. (Default 2GB) LIVE_PAUSE2_BUFFER_PATH='/tmp/ramdisk/live.buf' # Location of the live buffer.
NOTE Ensure the LIVE_PAUSE2_BUFFER_SIZE is set to less than your RAM volume size.
- Restart freevo
DVBStreamer Live Pause and Recording for DVB-T/C/S and ATSC
tv.dvbstreamer.livepause has now been superceded by tv.livepause (see above)
The Live Pause plugin allows you to pause DVB/ATSC channels and also enable DVB subtitles. To use the plugin you will need Xine andDVBStreamer(0.7 > for DVB-T and -C and the 0.8 > for DVB-S and ATSC).Please note that dvbstreamer is not the same util as dvbstream.
Once you got everything installed and configured you'll need to modify your local_conf.py to use it. Note that dvbstreamer runs in a separate process and needs to be started for recordserver to work.
dvbstreamer -a 0 -r -d -D
will start the dvbstreamer as a daemon process for the first adapter.
plugin.remove('tv.mplayer') plugin.activate('tv.dvbstreamer.live_pause') LIVE_PAUSE_BUFFER_SIZE=(6.25, 30 * 60) # Size of the live buffer as a tuple of max Mbps of the TV and seconds. LIVE_PAUSE_BUFFER_PATH='/tmp/freevo/live.buf' # Location of the live buffer.
The bitrate that we are referring to here is the maximum bitrate of a single service, so for SDTV 6.25 should probably be alright and for HDTV (MPEG2) 15 should be about right.
You will also need to modify your VIDEO_GROUPS as DVBStreamer hijacks the vdev to determine which DVB/ATSC adapter to use. So for example with 2 DVB/ATSC cards (and 2 DVBStreamer instances running one for each adapter) your VIDEO_GROUPS would look something like this:
TV_VIDEO_GROUPS = [ # Use this group for watching tv VideoGroup(vdev='0', group_type='dvb', desc='Watching Video Group', record_group=1), # Use this group for recording tv VideoGroup(vdev='1', group_type='dvb', desc='Recording Video Group', record_group=None), ]
This would use DVB adapter 0 to watch TV and adapter 1 to record.
To enable DVBStreamer record plugin you'll need to also add the following.
plugin.remove('tv.generic_record') plugin_record = plugin.activate('tv.dvbstreamer.record') TV_RECORD_FILE_SUFFIX='.ts'
Third Party
FreevoGenial & PluginXmlRpc
FreevoGenial is a small commandline client application sending scheduleRecording and remove ScheduledRecording requests to Freevo from any computer using XMLRPC. It was made for use with TVBrowser or TVGenial. PluginXmlRpc is the server part written for Freevo 1.5.x. More information and the download at http://demmer.ipax.at.
Other TV plugins
Removing commercials
Article moved here: CommdetectServer
Encoding server
Article moved here: EncodingServer
Reencode
To re-encode your videos you need to enable and configure the plugin (the options aren't absolutely necessary as the plugin provides several different profiles):
plugin.activate('video.reencode') REENCODE_CONTAINER = 'avi' REENCODE_RESOLUTION = 'Optimal' REENCODE_VIDEOCODEC = 'XviD' REENCODE_ALTPROFILE = None REENCODE_VIDEOBITRATE = 1200 #This is an integer value, not a string (i.e. don't put "'1200'", it won't work) REENCODE_AUDIOCODEC = 'MPEG 1 Layer 3 (mp3)' REENCODE_AUDIOBITRATE = 192 REENCODE_NUMPASSES = 2 REENCODE_VIDEOFILTER = None REENCODE_NUMTHREADS = 2
The EncodingServer page has more information on what containers and codecs are available. Once set up the sub-menu of any video will contain the option to transcode it to the settings above, though this can be changed inside the user interface.
An idlebar plugin is also provided to track the progress of the encoding server: plugin.activate('idlebar.transcode')