[Live-devel] Server 'trick play' support for MPEG Transport Stream files
Ross Finlayson
finlayson at live555.com
Thu Jan 11 13:00:15 PST 2007
Our RTSP server implementation (and therefore the "LIVE555 Media
Server", and the "testOnDemandRTSPServer" demo application) now
supports 'trick mode' operations (seeking, fast forward, reverse
play) when streaming MPEG Transport Stream files.
For this to work, each Transport Stream file must have (in the same
directory) a corresponding index file' (with name suffix ".tsx). You
create these index files using the "MPEG2TransportStreamIndexer"
application, whose code is distributed in the "testProgs" directory.
NOTE: Before you run this application, please upgrade to the latest
version (2007.01.11) of the "LIVE555 Streaming Media" code, and
rebuild it. (Earlier versions of the code had a bug that prevented
the application from working properly on some Transport Stream files.)
To generate each index file, run
MPEG2TransportStreamIndexer <transport-stream-file-name>
Be warned that this program is currently rather slow, so I suggest
running it on the fastest computer that you have.
Once you've generated an index file for each Transport Stream file
that you wish to stream, our RTSP server implementation will now
handle 'trick mode' operations on the file.
Unfortunately, VLC's GUI currently doesn't handle the trick mode
operations properly. (The "LIVE555 Streaming Media" code - which
implement's the RTSP client protocol in VLC - has all the hooks for
doing these trick mode operations; however, the VLC code above this
does not yet use this properly.) I'll be working with the VLC
developers to try to get this resolved ASAP, so we can have versions
of VLC that perform trick play on Transport Streams properly.
Unfortunately the only other client that I know of right now that
supports 'trick play' operations on MPEG Transport Streams is the
Amino set-top box (hardware). (This is what I have been using for
testing, pending a resolution of the problems with VLC.)
(If anyone knows of any other clients that work, please let us know.
The 'trick mode' operations are all a standard part of the RTSP
protocol, so there are likely to be other clients out there that
support it.)
In the meantime, once you have generated your index files, you can
try running a demo application called
"testMPEG2TransportStreamTrickPlay" (also in the "testProgs"
directory) to simulate the effect of 'trick play' operations on
Transport Stream files. To run it:
testMPEG2TransportStreamTrickPlay
<input-transport-stream-file-name> <start-time> <scale>
<output-transport-stream-file-name>
where
<input-transport-stream-file-name> is the original Transport
Stream file name (which must end with ".ts"). There must also be a
corresponding index file for this file.
<start-time> is the starting play time in seconds (use 0 to
play from the start)
<scale> is a non-zero integer, representing the playing speed
(use a negative number for reverse play)
Examples (assume that your original Transport Stream file is named
"foo.ts", and that you have already generated an index file, named
"too.tsx"):
testMPEG2TransportStreamTrickPlay foo.ts 0 8 foo8.ts
The output file "foo8.ts" is the original stream, sped up 8x
testMPEG2TransportStreamTrickPlay foo.ts 30 -1 foo-1.ts
The output file "foo-1.ts" is the original stream, played
backwards (at 1x speed), starting from the 30 second point.
testMPEG2TransportStreamTrickPlay foo.ts 30 -5 foo-5.ts
The output file "foo-5.ts" is the original stream, played
backwards (at 5x speed), starting from the 30 second point.
--
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
More information about the live-devel
mailing list