Recipe 14.12 Fast-Forwarding and Rewinding a Net Stream
14.12.1 Problem
You want to fast-forward or
rewind
(also called seeking) a net stream.
14.12.2 Solution
Use the NetStream.seek( ) method.
14.12.3 Discussion
You can fast-forward or rewind to any point within a net stream using
the NetStream.seek( ) method. This method
requires you to specify the number of seconds from the beginning of
the net stream to which to seek. For example, to return to the
beginning of a net stream, you can use the value 0:
// Return to the beginning of a net stream.
myNetStream.seek(0);
The preceding technique seeks to an absolute position within the
stream. However, if you want to seek to a position relative to the
current playback position, such as five seconds forward or backward,
add or subtract the number of seconds from the net
stream's time property (which
returns the current playback time in seconds from the beginning of
the net stream):
// Seek six seconds ahead of the current time.
myNetStream.seek(myNetStream.time + 6);
Also, stream data may not contain keyframes at every frame, and the
seek( ) method can seek only to a keyframe.
Therefore, by default, the seek( ) method moves
to the keyframe that is nearest to the frame you specify. For
example, if you instruct a net stream to seek to 12 seconds, but the
two nearest keyframes are at 10 and 15 seconds, the net stream seeks
to 10 seconds. If you need more precision, you can adjust the
Application.xml file, which is found in a
subdirectory of the FlashCom installation (such as
C:\Program Files\Macromedia\Flash Communication Server
MX\conf\_defaultRoot_\_defaultVHost_). You can change the
EnhancedSeek value to true to
increase the seeking precision for all net streams. Here is the
snippet from the Application.xml file that you
should change:
. . .
<StreamManager>
<EnhancedSeek>true</EnhancedSeek>
</StreamManager>
. . .
With enhanced seeking, you can seek to any whole second within the
stream. Be aware, however, that this greatly increases the processing
load on the server, so it should be used only when necessary.
14.12.4 See Also
Recipe 14.11 and Recipe 14.13
|