Friday, October 06, 2006

Playing back external FLV files dynamically

Source

As an alternative to importing video into the Flash authoring environment, you can use ActionScript to dynamically play back external FLV files in Flash Player. You can play back FLV files from an HTTP address or from the local file system. To play back FLV files, you use the NetConnection and NetStream classes and the attachVideo() method of the Video class. (For more information, see "NetConnection class", "NetStream class", and Video.attachVideo() in Flash ActionScript Language Reference.)

You can create FLV files by importing video into the Flash authoring tool and exporting it as an FLV file. (See "Macromedia Flash Video (FLV)" in Using Flash.) If you have Flash Professional, you can use the FLV Export plug-in to export FLV files from supported video-editing applications. (See "Exporting FLV files from video-editing applications (Flash Professional only)" in Using Flash.)

Using external FLV files provides certain capabilities that are not available when you use imported video:

  • Longer video clips can be used in your Flash documents without slowing down playback. External FLV files are played using cached memory. This means that large files are stored in small pieces and accessed dynamically, which does not require as much memory as embedded video files.
  • An external FLV file can have a different frame rate than the Flash document in which it plays. For example, you can set the Flash document frame rate to 30 fps and the video frame rate to 21 fps. This gives you greater control in ensuring smooth video playback.
  • With external FLV files, Flash document playback does not have to be interrupted while the video file is loading. Imported video files can sometimes interrupt document playback to perform certain functions (for example, accessing a CD-ROM drive). FLV files can perform functions independently of the Flash document, which does not interrupt playback.
  • Captioning of video content is easier with external FLV files because you can use event handlers to access metadata for the video.

Tip: To load FLV files from a web server, you might need to register the file extension and MIME type with your web server; check your web server documentation. The MIME type for FLV files is video/x-flv.

The following procedure shows how to play back a file named videoFile.flv that is stored in the same location as your SWF file.

To play back an external FLV file in a Flash document:

  1. With the document open in the Flash authoring tool, in the Library panel (Window > Library) select New Video from the Library options menu to create a video object.
  2. Drag a video object from the Library panel onto the Stage; this creates a video object instance.
  3. With the video object selected on the Stage, in the Property inspector (Window > Properties) enter my_video in the Instance Name text box.
  4. Open the Components panel (Window > Development Panels > Components), and drag a TextArea component to the Stage.
  5. With the TextArea object selected on the Stage, enter status in the Instance Name text box in the Property inspector.
  6. Select Frame 1 in the Timeline, and open the Actions panel (Window > Development Panels > Actions).
  7. Add the following code to the Actions panel:
    // Create a NetConnection object
    var netConn:NetConnection = new NetConnection();
    // Create a local streaming connection
    netConn.connect(null);
    // Create a NetStream object and define an onStatus() function
    var netStream:NetStream = new NetStream(netConn);
    netStream.onStatus = function(infoObject) {
    status_txt.text += "Status (NetStream)" + newline;
    status_txt.text += "Level: "+infoObject.level + newline;
    status_txt.text += "Code: "+infoObject.code + newline;
    };
    // Attach the NetStream video feed to the Video object
    my_video.attachVideo(netStream);
    // Set the buffer time
    netStream.setBufferTime(5);
    // Begin playing the FLV file
    netStream.play("videoFile.flv");

No comments: