Recoder-Tools

The recoder-tools target the same general goal as the vdr-mplayercluster-plugin from Sascha Volkenandt but with a slightly different way of doing: It does not a specialized plugin derived from the mplayer-plugin with the now obvious disadvantages of continuously further development (e.g. integrating new features from mplayer-plugin to mplayercluster-plugin or bugfixing for newer vdr-versions). Instead it replaces the well-known "mplayer.sh" script with its own binary recoderc. This client has the task to connect to a recoderd-server and tell him the filename to be played. The server now starts a mplayer-process which does the reencoding to MPEG (using the real mplayer.sh script). The transcoded MPEG stream as well as all output from mplayer is forwarded to the client. Also the client forwards all input (e.g. SLAVE-commands) to the server, which sends the to the server's mplayer input. All together, recoderc acts like a normal mplayer.sh script (input, output, video-data) but the CPU critical part is done on another host.

Currently the code is still in a early alpha state and being hardly developed further, but a first version with the basic desired functionalty is available:

I had the time to fix some bugs and improve the recoder-tools a bit more. See Changlog for more info.

Again I had some time to fix a long pending deadlock on invocation. For detailed changes see ChangeLog.

Documentation

So far, there is no real documentation as I do not have time to write much. I just translate some hints I gave Thomas Glomann, when he was the first one interested in my recoder-tools:

  1. The code is to be compiled with the traditional configure; make; make install.
  2. Useful configure flags:
  3. make install installs the programs recoderd (the "server") and recoderc. The server program is needed on your transcoding server and the client on your vdr host. If you use different linux distributions (to be exaclty: different versions of libstdc++) on these hosts, you should compile and install both programs on both hosts seperately.
  4. recoderc is the program that should react like the mplayer.sh script. You should set it as "mplayer.sh"-script on the vdr/mplayer-plugin's command line. Alternatively, you can create a symbolic link from the recoderc program to /usr/bin/mplayer.sh. Do not forget to set the mplayer-plugin to SLAVE mode in its configuration dialog!
  5. Both recoderd and recoderc need a working mplayer in the $PATH, but only the vdr machine needs a mplayer with DVB support. The mplayer installed on your vdr machine does not need any additional support (e.g. codecs). Its only purpose is to play the transcoded MPEG stream, generated from your transtranscoding server, on the DVB device. The mplayer on your transcoding server obviously should support as much as possible if you want to be able to play as much media codecs as possible!
  6. Finally, you need the mplayer.sh script on your transcoding server. I suggest the one from Juri Haberland. You should place the script somewhere in your path. If your transcoding server's mplayer has no DVB support you are fine, otherwise, you should set the VO config variable of Juri's mplayer.sh to VO="mpegpes:grab.mpg".
  7. The recoderd needs access to the media files from your vdr machine. I suggest using a NFS server on the vdr machine and a automounter on the transcoding server. Currently, neither recoderc nor recoderd makes any path conversion, so you should make sure, that the file /video/mplayer/film.avi is accessible on the transcoding server via the same path.
  8. Example:

  9. Remember to start the recoderd before trying to play a media file and to connect the hosts via network using the former set IP address for the server. recoderd needs no arguments. Currently it terminates after each transcoding run. If you want to have it restarted automatically, use this command in your shell:
  10. while true; do recoderd; done

Back to VDR


Patrick Cernko
Last modified: Tue Jun 8 15:06:21 CEST 2004