[ivtv-users] [ANN]: tvpvrd-1.2.5 Recording and transcoding daemon for ivtv

Johan Persson johanp at aditus.nu
Mon Feb 15 12:31:49 CET 2010

ANNOUNCEMENT - tvpvrd 1.2.5
This is to announce the release of the GPL 3.0 published multi-threaded 
recording/transcoding GNU-Linux daemon 'tvpvrd' - TV  Personal Video recorder 
for ivtv. Which is now believed to be feature rich enough and stable for a wider 

      Release: v1.2.5 (stable)
Sourceforge: http://sourceforge.net/projects/tvpvrd/

(The daemon is available as a traditional tar-package source and as prebuilt RPM 
for OpenSuSE 11.1 and 11.2)

NOTE: This is only for GNU-Linux NOT for any versions of Windows.

To all developers of ivtv-driver that has made this possible.

To provide the most stable and user friendly client/server command line based 
recorder/transcoder for ivtv-supported capture cards available on GNU-Linux.

In mailing lists and on the ivtv-wiki there are questions on how to do scheduled 
recording using a capture card. Usually the reply on the wiki and on the mailing 
lists is to use either a) some cron/at shell script or b) install a full fledged 
media center (e.g. MythTV).

This daemon solves this recording/scheduling problem by offering a clean method 
to schedule both recording and optional transcodings (using ffmpeg) by the means 
of a resident Unix/Linux daemon for those who do no want/need a full fledged 
media center but still wants more easy of use and flexibility than is possible 
with amnually added cron jobs.

The daemon manage an internal database of recordings. By starting the daemon one 
can then add/delete/modify/transcode recordings and files by the means of a 
standard TCP/IP connection to the server.

The dameon is capable of making use of multiple cards and will automatically 
choose the first free card at the specified time for a recording

This offers an alternative to have to install a large and  complex media center 
server and focus on the recording process and gives much more flexibility than a 
manually crafted shell script. This also easily give the added benefit of 
controlling recording while "on-the-road" as long as a normal TVP/IP connection 
can be established to the server.

* Client server architecture with automatic client arbitration
* Multi threaded, multi process architecture 
* Basic master /slave option for how to run the server which makes it possible 
to run as a slave to do transcoding on a server that doesnät have a capture 
* Full UTF-8 support for names of recordings
* Very small footprint
* Simultaneous recording using multiple capture cards
* Multi transcoding of the same video with user defined profiles
* Self contained XML based recording database (no need to install or setup a 
separate database)
* Intelligent load balancing for transcoding
* Small footprint and efficient TCP/IP port command interface. 
* Recordings can be manipulated from anywhere as long as it is possible to login 
to the server running tvpvrd.
* Large File Support (LFS) to enable recorded files with sizes >2GB
* Easy to use support for recurring recordings, daily, weekly, workdays, etc
* Intelligent time/date specification
* Extensive Unix manpage documentation (as well as PDF version)
* Extensive customization possible via INI-file
* Supports transcoding of previous recorded video

To schedule a recording for the coming Wed at 20:00 on BBC1 one gives the 
command (after logging in to the daemon for example via telnet) with the default 
name, duration and transcoding profile

>a BBC1 wed 20:00 

This will schedule a recording for the next Wednesday with default recording 
time (0:59 min) and a name based on the channel, date and time and use the 
default transcoding profile.

To schedule a recording of the news at 06:00-06:30 every workday and use the 
base name "Morning news" on channel3 and transcode to a suitable format for a 
mobile phones one could use the command

>ar f 50 channel3 06:00 06:30 Morning news @mobile

This command should be interpreted

ar 		- Add recurrent recording
f 		- Every Mon.-Fri
50 		- 50 Occurrences
06:00 	- Start time
06:30 	- End time
Morning ...- Base name of recording
@mobile	- Use the 'mobile' profile for transcoding

As an example of the possibilities with the server the list below shows the 
currently supported commands by the server.

  a    - Add recording
  ar   - Add repeated recording
  d    - delete single recording
  dp   - display all settings for specified profile
  dr   - delete all repeated recording
  h    - help
  i    - print detailed information on recording
  kt   - kill all ongoing transcoding(s)
  ktf  - set/unset kill transcoding flag at shutdown
  l    - list all pending recordings
  lc   - list all controls for the capture card
  log n -show the last n lines of the logfile
  ls   - list all stations
  lp   - list all profiles
  lq n - list queued transcodings
  n    - list the immediate next recording on each video
  o    - list the ongoing recording(s)
  ot   - list the ongoing transcoding(s)
  q    - quick recording
  rst  - reset all statistics
  rp   - refresh transcoding profiles from file
  s    - print server status
  sp   - set transcoding profile for specified recording
  st   - print profile statistics
  t    - print server time
  tf   - transcode specified file
  tl   - read list of videos to transcode from file
  td   - transcode all videos in directory
  u    - force update of database with recordings
  v    - print version
  vc <n> - print information on TV-Card <n>
  x    - view database (in XML format) with recordings
  z    - display all settings from ini-file
  ! <n>  - cancel ongoing recording
Type h <cmd> for syntax of each command


'tvpvrd' is a threaded (pthreads) GNU-Linux daemon consisting of ~13k LOC C-code 
with GNU C-source extensions. It has been written in a traditional Unix daemon 
style with a heavy focus on stability, memory usage minimization and safety from 
malicious users. 

The build structure is a traditonal autoconf/automake which should make it easy 
to compile and install.

The source code has been manually and programatically checked for possible 
memory leaks or safety issues by the means of static code analyzers and v1.2.5 
is to date believed to have no major vulnerabilities or memory issues.

Happy Recording!

More information about the ivtv-users mailing list