| 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.