Nikki, this is something I've been looking at as well as part of a research
project. I haven't found a clean way of doing it, so I've ended up taking
this quick'n'dirty approach:
1. Created 'n' different hinted, encoded movies - I'm just working with
audio, so each movie only has two tracks (sound track + hinted sound track)
2. Picked one file as the master, copied contents of other movies into that
one, ending up with a file that has n * 2 tracks, every second track is a
hint track
3. Edited that file with Dumpster to correct the track number in the SDP
description - required changing the 3rd-last byte in the trak/udta/hnti atom
of every hint track except the first one
If you open that movie, QuickTime Player send a SETUP request for each of
the tracks, followed by a single PLAY request. DSS then streams data for all
tracks. I changed QTSSFileModule.cpp to affect the behaviour of the server:
4. Added a qtssClientSessionObjectType attribute to identify the 'current'
track
5. When a PLAY request is received, in DoPlay, check for the bandwidth
parameter - if present, set the current track based on the bandwidth,
otherwise set the current track to the highest quality track in the file
6. Changed SendPackets so that a packet is only sent if it is from the
current track
7. Added a DoSetParameter function to handle SET_PARAMETER requests that
contain the bandwidth parameter - if that parameter is present, set the
current track based on the reported bandwidth
Now all that's missing is something to add the bandwidth parameter to PLAY
requests or send SET_PARAMETER requests. Maybe you have a custom-written
client that you can add functionality. I have a client-side proxy that I use
to modify requests coming from the QuickTime Player (and responses from DSS)
and also to inject requests into the stream.
Not a pretty solution - inefficient use of server resources, more RTSP
messages sent than should strictly be required. It's a solution that
required as few changes to DSS as possible - I fell into a hole trying to
make more sweeping changes previously.
Hope that helps, I don't think you got a better answer so far! If anybody
has advice on improvements to the process I used, or a better approach, I'd
be really interested to hear.
Jonathan Sherwin.
Lecturer, Dept. of Mathematics & Computing,
Cork Institute of Technology.
-----Original Message-----
From: "Nikki Cranley" <email@hidden>
To: "DSS Devel" <email@hidden>
Subject: Multiple video quality tracks in a file?
Date: Thu, 21 Nov 2002 15:01:29 -0000
Hi all,
Im curious, when encoding a file so there's a video track and an audio
track.
Is it possible to add multiple video tracks and controlling the active video
track.
For example, I encode file with a high, medium and low quality video track
in
addition to the audio track. Then is it possible then to switch which is the
active track and maintain synchronisation.
Thanks, rgds,
Nikki
-------------------Legal Disclaimer---------------------------------------
The above electronic mail transmission is confidential and intended only for the person to whom it is addressed. Its contents may be protected by legal and/or professional privilege. Should it be received by you in error please contact the sender at the above quoted email address. Any unauthorised form of reproduction of this message is strictly prohibited. The Institute does not guarantee the security of any information electronically transmitted and is not liable if the information contained in this communication is not a proper and complete record of the message as transmitted by the sender nor for any delay in its receipt.
----------------------------------------------------------------------------------------
_______________________________________________
streaming-server-developers mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/streaming-server-developers
Do not post admin requests to the list. They will be ignored.