DekGenius.com
[ Team LiB ] Previous Section Next Section

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

    [ Team LiB ] Previous Section Next Section