TiVo MPlayer
Purpose
Allows streaming of recorded programs off a TiVo or local TiVo streams to play onto a PC. No intermediate storage is required. No re-muxing is required.
See MythTivo for a MythTV Front End to TiVo-MPlayer
See Screenshot for TiVo MPlayer in Action!
Discuss TiVo MPlayer!
Features
- Local playback with complete skip control
- Remote playback (on TiVo) with complete skip control
Tested Streams
- SA S1 Version 1.3
- SA S1 Version 2.5
- SA S1 Version 3.0
- DTiVo S1 MPEG Audio
- DTiVo S1 AC-3 Audio
- SA S2 Version 3.0+
- DTiVo S2 MPEG Audio
- DTiVo S2 AC-3 Audio
Download
TiVo-Mplayer is now in the main mplayer code base.
mplayer can be downloaded here
TiVo-Mplayer vserver hooks are also in the main codeline, however you need to download the companion vstream-client, this work done by Joey Parrish
The vstream-client can be downloaded here
I take no responsibility, nor have I tested any of these changes.
Download - The following are now
MPlayer Source 0.19
MPlayer Source 0.16
MPlayer Cygwin Binary 0.16
MPlayer Cygwin Binary 0.16 with Windows Installer (Courtesy Burriko)
Vstream 1.2 Binary and Source for S1 and S2
MPlayer GUI (JRE 1.3 Required, MPlayer Version 0.10 or greater Required)
An Example Stream from an SA TiVo - TechTV's Fresh Gear
Build Instructions & Usage Notes
Installation
- vserver-?.tar.gz is required only if you want to stream directly from the TiVo's harddrive.
- If you want to build this, you will need to install the TiVo cross compiler.
- If not, you can just use the vserver binary included in the package.
Simply :
- Uncompress the archive
# tar xvfz vserver-?.tar.gz
- Copy vserver to your TiVo
- Execute it
# ./vserver
You may want to start it from your TiVo startup script.
- MPlayer-0.90rc4-tivo-0.?.tar.gz is required for both streaming from a TiVo and for playing locally stored TiVo streams. No binaries are included as mplayer prefers to be built for the target machine.
- Unpack the archive
# tar xvfz MPlayer-0.90rc4-tivo-0.?.tar.gz
- Configure the distribution for the Linux and other UNIXs
# ./configure
for Cygwin (Windows)
# ./configure --disable-mpdvdkit
- Make it
# make
- Install it
# make install
- Execute it
# mplayer
Usage
- Play a locally stored stream
# mplayer stream.ty
- Retrieve the now showing list from a TiVo, tivohost is the host name of your tivo, alternately you can use the TiVo's IP Address
# mplayer tivo://tivohost/list
- Play a remote stream, 12345 is the FSID provided in the now showing list
# mplayer tivo://tivohost/12345
- Play a remote stream, Part 1 of FSID 12345
# mplayer tivo://tivohost/12345/1
- Play a remote stream, Part 1 and 3 of FSID 12345
# mplayer tivo://tivohost/12345/1 tivo://tivohost/12345/3
- Extract a remote stream, Part 1 of FSID 12345 to file stream.ty
# mplayer -dumpfile stream.ty -dumpstream tivo://tivohost/12345/1
- Transcode stream 1544095 to divx
# mencoder tivo://tivohost/1544095 -ovc divx4 -oac mp3lame -o stream.avi
- Play a local file with Closed Caption and XDS On Screen
# mplayer -subcc stream.ty
- Play a local file with Closed Caption and XDS On Screen and also dump CC and XDS to a terminal
# mplayer -quiet -v -subcc stream.ty | egrep '^CC|^XDS'
TiVo MPlayer GUI
Use can either use the CLI to get the Now Showing List from your TiVo or use this cool Java applet (JRE 1.3+ required) to have a GUI Interface.
Burriko from DealDatabase originally put mplayerGUI together
Requirements
- Some Tivo streams on your hard drive -OR-
- Tivo with some sort of fast TCP connection (ie TivoNet, TurboNet, AirNet).
Current Issues
- If tystream part header is not present, mplayer will not know where to stop decoding in the stream. Streams allocated in the MFS Database usually allocate more disk bytes than necessary. The only place the correct size is known is in the part header. Possible issues :
- The mplayer MPEG library may crash because of the P/B Frames may be referencing something that is not there.
- MPlayer may go on fat, dumb, and happy playing another stream (if you are lucky enough to end on an I Frame.
- Seeking may cause lip sync to be off for a few seconds as mplayer
"catches" up.
- I am not sure how many concurrent streams you can pull from a single TiVo. I have done 2 at the same time, however, I am not sure of the impact on recording. I am interested in more information here.
Notes
- The final intent of these modifications is to go into the mainstream mplayer source.
- This *should* work with different types of streams (other than TiVo streams), just like stock mplayer.
Credit
- Tridge (of course), all of the streaming code is based on his (mostly overlooked) work. 80% of MPlayer*/vstream is his code.
- Olaf Beck for his help regarding informational support of tystream and MPEG information. He also provided me with DTiVo streams, as I have no direct access to a DTiVo.
- Arpad Gereoffy for mplayer, a very flexible (but complicated) framework. An awesome multi-faceted player too!
- Burriko from Deal Database for debugging assistance and mplayerGUI
- GardenHose from Deal Database for OSX Patches
- SBrk from Deal Database for FreeBSD Patches
- TheDroid from Deal Database for use of his DTiVo hardware from a warm and sunny place.
- mbm(AT)linux.com for the basis code for CC and XDS
Version Notes
Todo
- Commercial Detect and Skip
- Ty Stream Repair (Please contact me if you have interest in this feature)
Contact
tivo(AT)wingert.org
TiVo is a registered trademark of the TiVo Corporation
Error. Count file "/home/groups/t/ti/tivo-mplayer/htdocs/counts/count-mplayer" not writable or non-existant.