DVArchive Input Plug-In for xine and
VideoLAN Media Players
Note: DVArchive 3.0 is now out, so the patched version available below
is obsolete. Among many new features, version 3.0 fixes the bugs that
my patched version corrects. It also provides an HTML standard way of
controlling streaming, so streaming with
random access control should work correctly out-of-the-box
with compliant media players; VideoLAN is known to be compliant in this
respect. Therefore, my VideoLAN plugin is also obsolete.
I don't know yet if Xine works with 3.0 with or without the plugin;
when I have had a chance to test these, I'll update this page accordingly.
Among it's many uses, the DVArchive utility for ReplayTV
DVR's allows you to stream video from the ReplayTV to your computer. The
video can play on any video player that can handle an MPEG-2 video stream.
When you play a video recorded on the ReplayTV, sometime it's nice
to be able to skip ahead or back in the show. The ReplayTV remote
control allows you to do this when you watch video on your television,
and video player software on your computer also allows you to do this when
you watch a video file on your computer. Video player software normally
does not allow you to do this with streaming video, however, since there
is no standard method of controlling the video stream from the player.
DVArchive does provide a way for the video player to control the
stream from the ReplayTV, but until now there was no video player that
could use this interface. I have developed add-ons to the Open Source
xine (for Linux) and VideoLAN (for Windows and Linux, only
tested with Windows) video players that allows them to control streaming
playback from ReplayTV through DVArchive. With these add-ons you
can play a stream from your ReplayTV with all the same controls with which
you play a video file downloaded to your computer.
Using the Software
xine
There are several media players out there based on the xine library. This
add-on should work with any of them, although I have only tested it with
xine-ui. xine players use any number of dynamically loaded libraries
called plug-ins. This add-on provides a new input plug-in. Adding
it to the directory containing the other xine plug-ins will make this
functionality available to all xine-based players. When you stream
a video from your ReplayTV with DVArchive, you will be able to have the
same player functionality you have when playing a video from a file on
your system. In xine-ui, thise means you can use the slider to
skip to any point in the stream, and you can use the arrow keys to skip
forward and backward by 60 seconds or 15 seconds.
VideoLAN
The VideoLAN player should work the same way. As far as I can tell,
VideoLAN has skip ahead and skip back keys like xine.
- Left and Right arrow keys are supposed to skip forward and back 5
seconds
- Up and Down arrow keys are supposed to skip forward and back 60 seconds
- Page Up and Page Down keys skip forward and back by 5 minutes
- Home and End keys skip to the beginning and end of the stream
However, the VideoLAN player gets confused about the timing of the ReplayTV
MPEG stream, so these controls do not always work exactly as they should.
Adjusting the position in the stream with the slider does seem to work reliably.
DVArchive Patch
In the course of developing the add-ons, I found two bugs in DVArchive
that needed to be fixed before the plug-ins worked properly. The
fixes will be available in the upcoming 3.0 release of DVArchive; since this
is not yet available, I am providing here a patched DVArchive.jar so people
can use the plug-ins right away. The plug-ins will only work properly
with this patched version of DVArchive.jar.
Downloads
Binaries
xine
I have built one binary version of the xine
plug-in which I include here. This was built with Slackware
8.1 against xine-lib-1-beta12. Because of the modular nature of xine, this
ought to work for most Linux users of xine. Installation instructions
are included in readme.txt.
VideoLAN
There are now two versions of the VideoLAN software supported. Make
sure you have the correct plugin for the version of VideoLAN you have downloaded.
You can check the version of VideoLAN you have by selecting About from
the Help menu.
DVArchive Patch
This zip file contains the patched version
of DVArchive.jar. You simply use it in place of your existing DVArchive.jar.
Since this is not the "official" version, please don't expect
to get tech support for it from the usual places. Keep a copy
of your existing version of DVArchive.jar, and if the patched version gives
you trouble with normal operations, go back to that version first before
you ask for help. The patches deal specifically with issues related
to controlling streams, and are unlikely to affect any other area of DVArchive
operation. You can direct questions about controlling video streaming
to me.
Please note: the patched DVArchive.jar posted here on 7/7 contained
a bug that prevented the plug-ins from working properly for files larger
than 2 GB. The current version corrects this problem. If you downloaded
the patched DVArchive.jar before 7/10/2003, you should download again
so the plug-ins work properly on large files. You only need to download
the amended patched DVArchive.jar; the plug-ins themselves are fine.
Source
xine
If you unpack this source archive in the
base directory of your xine-lib-1-beta12 source installation and run the
configure script again, it will let you build the DVArchive input
plug-in with the rest of xine.
VideoLAN
- If you unpack this source archive
for 0.6.2 in the base directory of your vlc-0.6.2 source installation
you should be able to build the DVArchive input plug-in with Microsoft
Visual C++.
- If you unpack this
source archive for 0.6.0 in the base directory of your vlc-0.6.0 source
installation you should be able to build the DVArchive input plug-in with
Microsoft Visual C++.
DVArchive Patch
I don't have the source of DVArchive, so I am unable to patch the source.
I made my fixes by changing the class files directly. If you
are interested in how I did this, consult these
Java source files. To build them, you will also need my ClassWriter library.