Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
tivoserver-0.4.3-a4-cygwin.rar | 2006-05-12 | 1.7 MB | |
tivoserver-0.4.3-a2-setup.exe | 2006-02-07 | 5.4 MB | |
tivoserver_0.4.2_cygwin.rar | 2005-12-23 | 1.6 MB | |
tivoserver_0.4.1_cygwin.zip | 2005-12-22 | 2.0 MB | |
README-0.4 | 2005-12-11 | 5.2 kB | |
tivoserver-0.4-linux.gz | 2005-12-11 | 2.0 MB | |
tivoserver-0.4-macosx10.3.9.gz | 2005-12-11 | 2.1 MB | |
tivoserver-0.4-macosx10.3.9.tgz | 2005-12-11 | 2.1 MB | |
tivoserver_0.4_cygwin.rar | 2005-12-11 | 1.6 MB | |
tivoserver-0.4.tgz | 2005-12-10 | 3.6 MB | |
tivoserver.gz | 2005-09-10 | 861.6 kB | |
Totals: 11 Items | 23.1 MB | 0 |
Tivo HMO Server wsewell, BTUx9, johnsolo, and SteveT http://tivoserver.sf.net/ http://www.seedwiki.com/wiki/tivoserver/ Quickstart (Almost) ===== In this release building ffmpeg and mplex is required, if there is enough of a need we will add an option to disable all the AVI playing functionality (and conditionally eliminate the need for building ffmpeg and mplex). We have included the ffmpeg source as well as a patched mjpegtools (mplex) to simplify the build process. To build: cd mjpegtools ./configure make cd ../ffmpeg ./configure [ optional libraries ] make cd .. ./configure [ --with-extralibs="optional libraries used in ffmpeg" ] make If you have already built, or will build ffmpeg and mjpegtools separately, then there are configure options to specify where they are: ./configure --with-ffmpeg=PATH --with-mjpegtools=PATH [ --with-extralibs="optional libs for ffmpeg ] make To run: Usage: tivoserver [--help] [--group_by_directory] shows_directory [another_shows_directory...] What It Does So Far ===== It takes several directories of .tmf, .ty, or AVI files and makes them available for watching on your Tivo. All of the arguments, can be specified as settings in the configuration file (~/.tivoserver/settings.cfg). The first time you run tivoserver it will generate a settings.cfg file for you with all of the default values filled in. Please look there for more information on the settings. Here is the usage: Usage: tivoserver [--help] [--server_name name] [--group_by_directory] [--log_level level] shows_directory... There are still some bugs with the video transfer. Please be careful, and expect that your Tivo could reboot and/or crash while using tivoserver. "Other" Video Types ===== "Other" video type transfers have been overhauled to use libavcodec and libmplex directly rather than running them as external programs and piping the output. The "other" video type support uses the libavcodec (ffmpeg) logic so any file type supported by your particular build of libavcodec should work. Actual file extension is ignored (ie tivoserver tries all files agains libavcodec that aren't TY or TMF). Caching and Modifying Show Details ===== This version of tivoserver introduces the concept of a file cache. To eliminate the overhead of loading and checking large video files each time tivoserver starts, tivoserver now caches file information for all video files. When tivoserver looks through the video directories it checks to see if it has a cache file for each of the video files. If so, the cache files is opened and read to load the video information. If not tivoserver loads the video as normal, and creates a cache file for it. The cache files also allow for the modification of video details (such as title or groupname) by simply changing the plain text entries in the cache files. The cache files are stored in the following location: ~/.tivoserver/cache ( on *NIX systems ) c:\Application Data\.tivoserver\cache ( on Windows ) It may be tricky to find the proper cache file if multiple files in your collection have the same filename. Please be careful editing the cache files as the parsing mechanism is not very robust. If you encounter problems with videos being missing or having incorrect data, first try deleting the cache directory (it will be recreated the next time you run tivoserver). What Needs To Be Done ===== - Supporting transfer of shows from any Tivo down to the 'tivoserver'. This is where the NowShowingCollector actually becomes useful. This shouldn't be too hard, having finished the last step. Here we'll need BucketItem-> NowShowingEntry converter if the BucketItem data is not suitable. Technical Information ===== - The Streamable files have definitions for all the basic types used in the process (ie LONG, SHORT, BOOLEAN, OPTIONAL). The idea for the classes was shamelessly stolen from drnull ( thanks :) They are all derived from a base class called Streamable, and they all provide functions StreamIn/Out for reading/writing to/from streams represented by (STL) string or (my own custom) network objects. - Also in Streamable files, are definitions for the STRUCT subclass which is a base class for all of the 'STRUCTS'. The STRUCTS themselves are all defined in the TvStructs.hh file. Not wanting to write StreamIn/Out for all these classes, I invented a way to pass it's data members up to the parent class and have it stream them on its behalf. Thus the AskMembers()/TellMembers() methods. - Enums.h has all the ENUM values used in all the STRUCTs. - The VideoDecoder class is a base class for all decoders for video file types. It encompasses all the logic required to load a file load the part headers and the part data. Subclasses (ie specific decoders) _must_ implement the loadXML() and seekPart() virtual methods which define how to load the XML data containing the show info, and how to seek to the "next Part" respectively. If no XML data is found or exists, the loadXML() methods should simply return false.