Basics of video



Introduction to working with video

One important capability of Adobe® Flash® Player and Adobe® AIR™ is the ability to display and manipulate video information with ActionScript in the same way that you can manipulate other visual content such as images, animation, text, and so on.

When you create a Flash Video (FLV) file in Adobe Flash CS4 Professional, you have the option to select a skin that includes common playback controls. However, there is no reason you need to limit yourself to the options available. Using ActionScript, you have fine-tuned control over loading, displaying, and playback of video—meaning you could create your own video player skin, or use your video in any less traditional way that you want.

Working with video in ActionScript involves working with a combination of several classes:

  • Video class: The actual video content box on the Stage is an instance of the Video class. The Video class is a display object, so it can be manipulated using the same techniques that can be applied to other display objects, such as positioning, applying transformations, applying filters and blending modes, and so forth.

  • NetStream class: When you’re loading a video file to be controlled by ActionScript, a NetStream instance represents the source of the video content—in this case, a stream of video data. Using a NetStream instance also involves using a NetConnection object, which is the connection to the video file—like the tunnel that the video data is fed through.

  • Camera class: When you’re working with video data from a camera connected to the user’s computer, a Camera instance represents the source of the video content—the user’s camera and the video data it makes available.

When you’re loading external video, you can load the file from a standard web server for progressive download, or you can work with streaming video delivered by a specialized server such as Adobe’s Flash® Media Server.

Common video tasks

This chapter describes the following video-related tasks that you will likely want to perform:

  • Displaying and controlling video on the screen

  • Loading external video files

  • Controlling video playback

  • Using full screen

  • Handling metadata and cue point information in a video file

  • Capturing and displaying video input from a user’s camera

Important concepts and terms

  • Cue point: A marker that can be placed at a specific moment in time in a video file, for example to act like a bookmark for locating that point in time, or to provide additional data that is associated with that moment in time.

  • Encoding: The process of taking video data in one format and converting it to another video data format; for example, taking a high-resolution source video and converting it to a format that’s suitable for Internet delivery.

  • Frame: A single segment of video information; each frame is like a still image representing a snapshot of a moment in time. By playing frames in sequence at high speed, the illusion of motion is created.

  • Keyframe: A video frame which contains the full information for the frame. Other frames that follow a keyframe only contain information about how they differ from the keyframe, rather than containing the full frame’s worth of information.

  • Metadata: Information about a video file that is embedded within the video file and retrieved when the video has loaded.

  • Progressive download: When a video file is delivered from a standard web server, the video data is loaded using progressive download, meaning the video information loads in sequence. This has the benefit that the video can begin playing before the entire file is downloaded; however, it prevents you from jumping ahead to a part of the video that hasn’t loaded.

  • Streaming: As an alternative to progressive download, a special video server can be used to deliver video over the Internet using a technique known as streaming (sometimes called “true streaming”). With streaming, the viewer’s computer never downloads the entire video at one time. To speed up download times, at any moment the computer only needs a portion of the total video information. Because a special server controls the delivery of the video content, any part of the video can be accessed at any time, rather than needing to wait for it to download before accessing it.

Working through in-chapter examples

As you’re working through the chapter, you may want to test some of the example code listings for yourself. Because this chapter is about working with video in ActionScript, many of the code listings in this chapter involve working with a video object, which could be one that has been created and placed on the Stage in Flash, or one that’s created using ActionScript. Testing a sample will involve viewing the result in Flash Player or AIR to see the effects of the code on the video.

Most of the example code listings manipulate a Video object without creating the object explicitly. To test these code listings in this chapter:

  1. Create an empty Flash document.

  2. Select a keyframe in the Timeline.

  3. Open the Actions panel and copy the code listing into the Script pane.

  4. If necessary, open the Library panel.

  5. From the Library panel menu, choose New Video.

  6. In the Video Properties dialog box, enter a name for the new video symbol, and choose Video (ActionScript-controlled) in the Type field. Click OK to create the Video symbol.

  7. Drag an instance of your video symbol from the Library panel onto the Stage.

  8. With the video instance selected, in the Property inspector, give it an instance name. The name should match the name used for the Video instance in the example code listing—for example, if the code listing manipulates a Video object named vid, you should name your Stage instance vid as well.

  9. Run the program using Control > Test Movie.

    On the screen you will see the results of the code manipulating the video as specified in the code listing.

Some example code listings in this chapter include a class definition in addition to the example code. In those listings, in addition to the previous steps, and before testing the SWF, you will need to create the class that’s used in the example. To create a class defined in an example code listing:

  1. Make sure you have saved the FLA file that will be used for testing.

  2. From the main menu choose File > New.

  3. In the New Document dialog, in the Type section, choose ActionScript File. Click OK to create the new ActionScript file.

  4. Copy the class definition code from the example into the ActionScript document.

  5. From the main menu, choose File > Save. Save the file in the same directory as the Flash document. The file’s name should match the name of the class in the code listing. For instance, if the code listing defines a class named “VideoTest,” save the ActionScript file as “VideoTest.as”.

  6. Return to the Flash document.

  7. Run the program using Control > Test Movie.

    You will see the results of the example displayed on the screen.

Other techniques for testing example code listings are explained in more detail in Testing in-chapter example code listings.