eVo PVR - Linux P2P Personal Video Recorder

Don't you wish there were a knob on the TV to turn up the intelligence? There's one marked 'Brightness,' but it doesn't work. -- Gallagher

Abstract
The goal of eVo PVR is to provide a personal video recorder system, split into a client / server model. A number of client machines, each requiring very limited hardware and/or procesor power will connect via. a local area network to another machine acting as a central content server for that lan. The client machine, through the use of a remote control, will be able to play back any media on the local server and manage the content and resources available to the server. The local server, equipped with one or more TV capture cards will schedule, capture and encode media from a broadcast source, edit that media possibly to remove commercials, and finally store and catalog the result. Multiple servers may cooperate over a network to capture media not available on a particular servers broadcast medium, share already captured data and archive infrequently viewed material where more storage is available. It will be possible to have a client and server running on the same physical machine.


Status
Work on the server is steadaly progressing. The most important features are quickly becomming stable. With a little more work, I would like to see the first release by the end of August.

There is a binding of the client libraries into PHP, and a simplistic web interface, that can search, search result, and present a channel guide.

A very limited proof of concept I've used to learn about putting this process together is available. I debaited about releasing this because it is far from a quality product -- but I decided to realase it with this warning. The server is driven by a cron job and PHP scripts, the client is based on IR File Chooser by Andreas Gohr. The proof of concept does not include any P2P abilites.
Here is a screenshot of the web interface and the client playing.



Plans
  • Server daemon written in C++ for linux: in progress (xmltv/mysql database working, network rewrite, C client libaries mostly completed, record/filter/encoder core)
  • Command line client for linux: provides functionality currently available in libevopvr
  • Web client: provides functionality currently available in libevopvr through libevophp
  • X client: conceptual design completed
  • XBoX client: available through xbox-linux, using the X client.


    Features
  • Capture live tv
  • Realtime encoding to libavcodec/mp3/ac3
  • Realtime edit for removing advertisements/commercials
  • Stream realtime capture, timeshift live tv, remove commercials and deinterlace on the fly, with multicast output over a local area network to multiple clieints
  • Browse tv listings upto 7 days in the future
  • Automatically sudjest alternatives to resolve time conflicts
  • Automatically schedule to record all episodes of a series
  • Local (or non-local) servers cooperate over an IP network to share storage/capture of media
  • Index/Play an existing media collection on CD/DVD
  • Automatically burn infrequently viewed material to CD/DVD and add to catalog
  • IMDB query for extra movie information
  • Powerful web interface to schedule/view status/stream media

    If you have any other feature sudjestions, let me know!



    News
    Aug 19 15:20:44 2003 - No site updates in a while, but this dosent mean there hasnt been regular progress on this project. I've implemented an all new capture subsystem, essentially a pluggable pipeline for video processing. Currently in CVS it can capture, deinterlace and encode using libavcodec and libavformat. Next is the secondary filters, for things like removing commercials on-the-fly and timeshifting. With a little more work, I'd like to see the first release by the end of the month!

    Jun 11 03:56:49 2003 - I've made some major changes in the codebase, most significantly, all new multithreaded network code, and starting work on my own capture code. This should allow for a much more customized filter chain to do 'special' things like remoiving commercials on the fly, and streaming content while capturing. On another intesteting note, I've started experimenting with xbox-linux, and Gentoox. It seems it would be very simple to use the linux client on an xbox running xbox-linux, and have high quality progressive scan and 5.1 optical output to your tv. Also going to investigate getting the xbox's plug in IR tower to recieve signals from LIRC, enableing you to use any remote control with the client.

    Apr 21 13:48:30 2003 - Language bindings for the client libraries into PHP is functional and somewhat copmlete. On the side I've started working on a web interface, which is looking pretty good. Screenshots to come soon.

    Apr 12 23:24:01 2003 - No updates for a while.. but lots of activity. The record server is nearly ready, as well as the client libraries. Biggest focus right now is on wrapping the client libraries in a shared object that can be loaded into php. Hopefully this will allow for a really nice web interface. I'd like to see a functional release at the end of the month.

    Mar 16 04:03:16 2003 - Still making progress with completing the C++ rewrite and C client libraries. I have been playing with XboxMediaPlayer recently, will have to look into adding evopvr support once the client libraries are ready. Also a Qt based client is being worked on.

    Feb 27 22:18:23 2003 - Its been a while sience I've updated this site, been very busy recently. Progress has been made. I have tested encoding in realtime using transcode with a Bt878 capture board and it works very well. Compression with xvid is about 8Mb/min or 200 (?) hours to a 120gb hard disk. Most work is focused now finnishing the daemon's networking core and writting client libs. I would really hope to see the "simple client" within the next week or so.

    Jan 27 13:11:13 2003 - This weekend I put together the linux client machine. Its a HP Kayak 233Mhz, with a Matrox G400-TV. Got it working with 1280x720i HDTV output to the bigscreen through X running the fbdev driver and mplayer using xmga taking advantage of the G400's hardware capabilities. Very pretty.

    Jan 24 19:37:05 2003 - I have gotten my hands on some older Bt based capture boards for testing with the new daemon. Hopefully they will work a little better than the Matrox G400 has. Also have some new hardware arriving this weekend. Had an idea about movie covers -- scrape them from amazon.com searches should give some nice looking cover pictures. Though thats still a ways down the road.

    Jan 13 15:46:20 2003 - Looking for some help on this thing.. Interested parties please email. Also today had the idea of building a thin client for the XBoX. This could be quite interesting as it has integrated 1080i HDTV output.

    Jan 10 10:54:18 2003 - Making good progress on the recode. Evopvrd is getting close to ready, maybe after this weekend. Also started design for a new P2P protocol loosely based on GNUtella and Kazaa with a few concepts borrowed from Cisco routing protocols. I'm thinking of making it an independant library..

    Dec 24 23:07:25 2002 - Contrary to popular belief, this project is not dead. Updated this site today as well as began work on the design UML.



    Download
    There are no files ready for realease, but the proof of concept is available in CVS with limited documentation. You will need to check out the php_server_scripts and old_client modules.



    This site created and maintained by Matt Anderson, mda2376@rit.edu
    Sourceforge Logo