Adobe® Flex® 4 Language Reference
Hide Packages and Classes List |  Packages  |  Classes  |  Index  |  Appendixes
flash.net 
NetStream 
Packageflash.net
Classpublic class NetStream
InheritanceNetStream Inheritance EventDispatcher Inheritance Object

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The NetStream class opens a one-way streaming connection between an AIR or Flash Player application and Flash Media Server, or between an AIR or Flash Player application and the local file system. A NetStream object is a channel within a NetConnection object. This channel can either publish a stream, using NetStream.publish(), or subscribe to a published stream and receive data, using NetStream.play(). You can publish or play live (real-time) data and previously recorded data. You can also call the NetStream.send() method to send text messages to all subscribed clients.

Playing external video files provides several advantages over embedding video in a SWF file, such as better performance and memory management, and independent video and SWF frame rates.

Adobe AIR and Flash Player 9.0.115.0 and later versions support files derived from the standard MPEG-4 container format including F4V, MP4, M4A, MOV, MP4V, 3GP, and 3G2 if they contain H.264 video and/or HEAAC v2 encoded audio. H.264 delivers higher quality video at lower bitrates when compared to the same encoding profile in Sorenson or On2. HE-AAC v2 is an extension of AAC (a standard audio format defined in the MPEG-4 video standard) that uses Spectral Band Replication (SBR) and Parametric Stereo (PS) techniques to increase coding efficiency at low bitrates. For information about supported codecs and file formats, see http://www.adobe.com/go/hardware_scaling_en and the www.adobe.com/go/learn_fms_fileformats_en.

Workflow for publishing and playing streams:

  1. Create a NetConnection object.
  2. Call the NetConnection.connect() method to connect to the application instance on the server.
  3. Create a NetStream object to create a stream within the connection.
  4. To capture, encode, and publish audio and video, call the NetStream.attachAudio()method and the NetStream.attachCamera() method.
  5. Call the NetStream.publish() method to give the stream a unique name and send data over the stream to the server so that others can receive it. You can also record the data as you publish it, so that users can play it back later.
  6. Call the NetStream.play() method to play a live stream or a recorded stream. Pass the play() method the name of the string passed to the publish() method.

Using data keyframes with Flash Media Server: After creating the NetConnection and NetStream objects, you can use NetStream.send() to add metadata to live audio or video as you stream it to the server. Metadata can be information such as the height or width of a video, its duration, the name of its creator, and so on. To define the metadata, use the special handler name @setDataFrame as the first argument to NetStream.send().

Receiving data from a Flash Media Server stream, progressive F4V file, or progressive FLV file: Flash Media Server, F4V files, and FLV files can send event objects containing data at specific data points during streaming or playback. You can handle data from a stream or FLV file during playback in two ways:

  • Associate a client property with an event handler to receive the data object. Use the NetStream.client property to assign an object to call specific data handling functions. The object assigned to the NetStream.client property can listen for the following data points: onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onTextData(), and onXMPData(). Then write procedures within those functions to handle the data object returned from the stream or FLV file during playback. See the NetStream.client property for more information.
  • Associate a client property with a subclass of the NetStream class, then write an event handler to receive the data object. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

Note: To send data through an audio file, like an MP3 file, use the Sound class to associate the audio file with a Sound object. Then, use the Sound.id3 property to read metadata from the sound file.

View the examples

See also



Public Properties
 PropertyDefined By
  bufferLength : Number
[read-only] The number of seconds of data currently in the buffer.
NetStream
  bufferTime : Number
Specifies how long to buffer messages before starting to display the stream.
NetStream
  bytesLoaded : uint
[read-only] The number of bytes of data that have been loaded into the application.
NetStream
  bytesTotal : uint
[read-only] The total size in bytes of the file being loaded into the application.
NetStream
  checkPolicyFile : Boolean
Specifies whether the application should try to download a cross-domain policy file from the loaded video file's server before beginning to load the video file.
NetStream
  client : Object
Specifies the object on which callback methods are invoked to handle streaming or FLV file data.
NetStream
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  currentFPS : Number
[read-only] The number of frames per second being displayed.
NetStream
  farID : String
[read-only] The identifier of the far end that is connected to this NetStream instance.
NetStream
  farNonce : String
[read-only] A value chosen substantially by the other end of this stream, unique to this connection.
NetStream
  info : NetStreamInfo
[read-only] Returns a NetStreamInfo object whose properties contain statistics about the quality of service.
NetStream
  liveDelay : Number
[read-only] The number of seconds of data in the subscribing stream's buffer in live (unbuffered) mode.
NetStream
  maxPauseBufferTime : Number
Specifies how long to buffer messages during pause mode, in seconds.
NetStream
  nearNonce : String
[read-only] A value chosen substantially by this end of the stream, unique to this connection.
NetStream
  objectEncoding : uint
[read-only] The object encoding (AMF version) for this NetStream object.
NetStream
  peerStreams : Array
[read-only] An object that holds all of the subscribing NetStream instances that are listening to this publishing NetStream instance.
NetStream
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
  soundTransform : flash.media:SoundTransform
Controls sound in this NetStream object.
NetStream
  time : Number
[read-only] The position of the playhead, in seconds.
NetStream
Public Methods
 MethodDefined By
  
NetStream(connection:NetConnection, peerID:String = "connectToFMS")
Creates a stream that can be used for playing video files through the specified NetConnection object.
NetStream
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
EventDispatcher
  
Specifies an audio stream sent over the NetStream object, from a Microphone object passed as the source.
NetStream
  
attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
Starts capturing video from a camera, or stops capturing if theCamera is set to null.
NetStream
  
Stops playing all data on the stream, sets the time property to 0, and makes the stream available for another use.
NetStream
 Inherited
Dispatches an event into the event flow.
EventDispatcher
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
  
Invoked when a peer-publishing stream matches a peer-subscribing stream.
NetStream
  
Pauses playback of a video stream.
NetStream
  
play(... arguments):void
Plays media files.
NetStream
  
Begins playback of media files, with several options for playback.
NetStream
  
Extracts any DRM metadata from a locally stored media file.
NetStream
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
  
publish(name:String = null, type:String = null):void
Sends streaming audio, video, and text messages from a client to Flash Media Server, optionally recording the stream during transmission.
NetStream
  
Specifies whether incoming audio plays on the stream.
NetStream
  
Specifies whether incoming video will play on the stream.
NetStream
  
Specifies the frame rate for incoming video.
NetStream
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
  
[static] Deletes all locally cached digital rights management (DRM) voucher data.
NetStream
  
Resumes playback of a video stream that is paused.
NetStream
  
seek(offset:Number):void
Seeks the keyframe (also called an I-frame in the video industry) closest to the specified location.
NetStream
  
send(handlerName:String, ... arguments):void
Sends a message on a published stream to all subscribing clients.
NetStream
  
Sets the DRM authentication credentials needed for viewing the underlying encrypted content.
NetStream
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
  
Pauses or resumes playback of a stream.
NetStream
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active.EventDispatcher
  Dispatched when an exception is thrown asynchronously — that is, from native asynchronous code.NetStream
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive.EventDispatcher
  Dispatched when a NetStream object tries to play a digital rights management (DRM) encrypted content that requires a user credential for authentication before playing.NetStream
  Dispatched when a NetStream object, trying to play a digital rights management (DRM) encrypted file, encounters a DRM-related error.NetStream
  Dispatched when the digital rights management (DRM) encrypted content begins playing (when the user is authenticated and authorized to play the content).NetStream
  Dispatched when an input or output error occurs that causes a network operation to fail.NetStream
  Dispatched when a NetStream object is reporting its status or error condition.NetStream
  Establishes a listener to respond when an embedded cue point is reached while playing a video file.NetStream
  Establishes a listener to respond when AIR extracts DRM content metadata embedded in a media file.NetStream
  Establishes a listener to respond when Flash Player receives image data as a byte array embedded in a media file that is playing.NetStream
  Establishes a listener to respond when Flash Player receives descriptive information embedded in the video being played.NetStream
  Establishes a listener to respond when a NetStream object has completely played a stream.NetStream
  Establishes a listener to respond when Flash Player receives text data embedded in a media file that is playing.NetStream
  Establishes a listener to respond when Flash Player receives information specific to Adobe Extensible Metadata Platform (XMP) embedded in the video being played.NetStream
  Dispatched when the application attempts to play content encrypted with digital rights management (DRM), by invoking the NetStream.play() method.NetStream
Public Constants
 ConstantDefined By
  CONNECT_TO_FMS : String = "connectToFMS"
[static] A static object used as a parameter to the constructor for a NetStream instance.
NetStream
  DIRECT_CONNECTIONS : String = "directConnections"
[static] Creates a peer-to-peer publisher connection.
NetStream
Property Detail

bufferLength

property
bufferLength:Number  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The number of seconds of data currently in the buffer. You can use this property with the bufferTime property to estimate how close the buffer is to being full — for example, to display feedback to a user who is waiting for data to be loaded into the buffer.



Implementation
    public function get bufferLength():Number

See also

bufferTime

property 
bufferTime:Number

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies how long to buffer messages before starting to display the stream. For example, to make sure that the first 15 seconds of the stream play without interruption, set bufferTime to 15; the application begins playing the stream only after 15 seconds of data are buffered.

The default value is 0.1 (one-tenth of a second). To determine the number of seconds currently in the buffer, use the bufferLength property.

Note: To avoid distortion when streaming pre-recorded (not live) content, do not set the value of Netstream.bufferTime to 0. By default, the application uses an input buffer for pre-recorded content that queues the media data and plays the media properly. For pre-recorded content use the default setting or increase the buffer time.

Starting with Flash Player 9.0.115.0, Flash Player no longer clears the buffer when NetStream.pause() is called. Before Flash Player 9.0.115.0, Flash Player waited for the buffer to fill up before resuming playback, which often caused a delay.

For a single pause, the NetStream.bufferLength property has a limit of either 60 seconds or twice the value of NetStream.bufferTime, whichever value is higher. For example, if bufferTime is 20 seconds, Flash Player buffers until NetStream.bufferLength is the higher value of either 20*2 (40), or 60, so in this case it buffers until bufferLength is 60. If bufferTime is 40 seconds, Flash Player buffers until bufferLength is the higher value of 40*2 (80), or 60, so in this case it buffers until bufferLength is 80 seconds.

The bufferLength property also has an absolute limit. If any call to pause() causes bufferLength to increase more than 600 seconds or the value of bufferTime * 2, whichever is higher, Flash Player flushes the buffer and resets bufferLength to 0. For example, if bufferTime is 120 seconds, Flash Player flushes the buffer if bufferLength reaches 600 seconds; if bufferTime is 360 seconds, Flash Player flushes the buffer if bufferLength reaches 720 seconds.

Tip: You can use NetStream.pause() in code to buffer data while viewers are watching a commercial, for example, and then unpause when the main video starts.

For more information about the new pause behavior, see http://www.adobe.com/go/learn_fms_smartpause_en.

Flash Media Server. The buffer behavior depends on whether the buffer time is set on a publishing stream or a subscribing stream. For a publishing stream, bufferTime specifies how long the outgoing buffer can grow before the application starts dropping frames. On a high-speed connection, buffer time should not be a concern; data will be sent almost as quickly as the application can buffer it. On a slow connection, however, there might be a significant difference between how fast the application buffers the data and how fast it can be sent to the client.

For a subscribing stream, bufferTime specifies how long to buffer incoming data before starting to display the stream. For example, if you want to make sure that the first 15 seconds of the stream play without interruption, set bufferTime to 15; Flash will begin playing the stream only after 15 seconds of data have been buffered.

When a recorded stream is played, if bufferTime is zero, Flash sets it to a small value (approximately 10 milliseconds). If live streams are later played (for example, from a playlist), this buffer time persists. That is, bufferTime remains nonzero for the stream.



Implementation
    public function get bufferTime():Number
    public function set bufferTime(value:Number):void

See also

bytesLoaded

property 
bytesLoaded:uint  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The number of bytes of data that have been loaded into the application. You can use this property with the bytesTotal property to estimate how close the buffer is to being full — for example, to display feedback to a user who is waiting for data to be loaded into the buffer.



Implementation
    public function get bytesLoaded():uint

See also

bytesTotal

property 
bytesTotal:uint  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The total size in bytes of the file being loaded into the application.



Implementation
    public function get bytesTotal():uint

See also

checkPolicyFile

property 
checkPolicyFile:Boolean

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies whether the application should try to download a cross-domain policy file from the loaded video file's server before beginning to load the video file. This property applies when you are using a NetStream object for progressive video download (standalone files), or when you are loading files that are outside the calling file's own domain. This property is ignored when you are using a NetStream object to get an RTMP asset.

Set this property to true when you are loading a video file from outside the calling SWF file's domain and you need to use the BitmapData.draw() method for pixel-level access to the video. If you call BitmapData.draw() without setting the checkPolicyFile property to true at loading time, you may get a SecurityError exception because the required policy file was not downloaded.

If you don't need pixel-level access to the video you are loading, avoid setting checkPolicyFile to true. Checking for a policy file consumes network bandwidth and may delay the start of your download.

When you call the NetStream.play() method with checkPolicyFile set to true, Flash Player or the AIR runtime must either successfully download a relevant cross-domain policy file or determine that no such policy file exists before it begins downloading the object specified in your call to NetStream.play(). To verify the existence of a policy file, Flash Player or the AIR runtime performs the following actions, in this order:

  1. The application considers policy files that have already been downloaded.
  2. The application tries to download any pending policy files specified in calls to the Security.loadPolicyFile() method.
  3. The application tries to download a policy file from the default location that corresponds to the URL you passed to NetStream.play(), which is /crossdomain.xml on the same server as that URL.

In all cases, Flash Player or the AIR runtime requires that an appropriate policy file exist on the video's server, that it provide access to the object at the URL you passed to play() based on the policy file's location, and that it allow the domain of the calling code's file to access the video, through one or more <allow-access-from> tags.

If you set checkPolicyFile to true, the application waits until the policy file is verified before downloading the video. Wait to perform any pixel-level operations on the video data, such as calling BitmapData.draw(), until you receive onMetaData or NetStatus events from your NetStream object.

If you set checkPolicyFile to true but no relevant policy file is found, you won't receive an error until you perform an operation that requires a policy file, and then the application throws a SecurityError exception.

Be careful with checkPolicyFile if you are downloading a file from a URL that uses server-side HTTP redirects. The applicatoins tries to retrieve policy files that correspond to the initial URL that you specify in NetStream.play(). If the final file comes from a different URL because of HTTP redirects, the initially downloaded policy files might not be applicable to the file's final URL, which is the URL that matters in security decisions.

For more information on policy files, see the "Flash Player Security" chapter of Programming ActionScript 3.0.



Implementation
    public function get checkPolicyFile():Boolean
    public function set checkPolicyFile(value:Boolean):void

See also

client

property 
client:Object

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies the object on which callback methods are invoked to handle streaming or FLV file data. The default object is this, the NetStream object being created. If you set the client property to another object, callback methods are invoked on that other object. The NetStream.client object can call the following functions and receive an associated data object: onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onTextData(), and onXMPData().

To associate the client property with an event handler:

  1. Create an object and assign it to the client property of the NetStream object:
         var customClient:Object = new Object();
         my_netstream.client = customClient;
         
  2. Assign a handler function for the desired data event as a property of the client object:
         customClient.onImageData = onImageDataHandler;           
         
  3. Write the handler function to receive the data event object, such as:
          public function onImageDataHandler(imageData:Object):void {
                  trace("imageData length: " + imageData.data.length);
          }
         

When data is passed through the stream or during playback, the data event object (in this case the imageData object) is populated with the data. See the onImageData description, which includes a full example of an object assigned to the client property.

To associate the client property with a subclass:

  1. Create a subclass with a handler function to receive the data event object:
         class CustomClient {
            public function onMetaData(info:Object):void {
                trace("metadata: duration=" + info.duration + " framerate=" + info.framerate);
         }
         
  2. Assign an instance of the subclass to the client property of the NetStream object:
         my_netstream.client = new CustomClient();
         

When data is passed through the stream or during playback, the data event object (in this case the info object) is populated with the data. See the class example at the end of the NetStream class, which shows the assignment of a subclass instance to the client property.



Implementation
    public function get client():Object
    public function set client(value:Object):void

Throws
TypeError — The client property must be set to a non-null object.

See also

currentFPS

property 
currentFPS:Number  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The number of frames per second being displayed. If you are exporting video files to be played back on a number of systems, you can check this value during testing to help you determine how much compression to apply when exporting the file.



Implementation
    public function get currentFPS():Number

farID

property 
farID:String  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

The identifier of the far end that is connected to this NetStream instance. This property is defined only for RTMFP connections.



Implementation
    public function get farID():String

farNonce

property 
farNonce:String  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

A value chosen substantially by the other end of this stream, unique to this connection. This value appears to the other end of the stream as its nearNonce value. This property is defined only for RTMFP connections.



Implementation
    public function get farNonce():String

info

property 
info:NetStreamInfo  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

Returns a NetStreamInfo object whose properties contain statistics about the quality of service. The object is a snapshot of the current state.



Implementation
    public function get info():NetStreamInfo

See also

liveDelay

property 
liveDelay:Number  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The number of seconds of data in the subscribing stream's buffer in live (unbuffered) mode. This property specifies the current network transmission delay (lag time).

This property is intended primarily for use with a server such as Flash Media Server; for more information, see the class description.

You can get the value of this property to roughly gauge the transmission quality of the stream and communicate it to the user.



Implementation
    public function get liveDelay():Number

maxPauseBufferTime

property 
maxPauseBufferTime:Number

Specifies how long to buffer messages during pause mode, in seconds. This property can be used to limit how much buffering is done during pause mode. As soon as the value of NetStream.bufferLength reaches this limit, it stops buffering. If this value is not set, it defaults the limit to 60 seconds or twice the value of NetStream.bufferTime on each pause, whichever is higher.



Implementation
    public function get maxPauseBufferTime():Number
    public function set maxPauseBufferTime(value:Number):void

See also

nearNonce

property 
nearNonce:String  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

A value chosen substantially by this end of the stream, unique to this connection. This value appears to the other end of the stream as its farNonce value. This property is defined only for RTMFP connections.



Implementation
    public function get nearNonce():String

objectEncoding

property 
objectEncoding:uint  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The object encoding (AMF version) for this NetStream object. The NetStream object inherits its objectEncoding value from the associated NetConnection object. It's important to understand this property if your ActionScript 3.0 SWF file needs to communicate with servers released prior to Flash Player 9. For more information, see the objectEncoding property description in the NetConnection class.

The value of this property depends on whether the stream is local or remote. Local streams, where null was passed to the NetConnection.connect() method, return the value of NetConnection.defaultObjectEncoding. Remote streams, where you are connecting to a server, return the object encoding of the connection to the server.

If you try to read this property when not connected, or if you try to change this property, the application throws an exception.



Implementation
    public function get objectEncoding():uint

See also

peerStreams

property 
peerStreams:Array  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

An object that holds all of the subscribing NetStream instances that are listening to this publishing NetStream instance.



Implementation
    public function get peerStreams():Array

soundTransform

property 
soundTransform:flash.media:SoundTransform

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Controls sound in this NetStream object. For more information, see the SoundTransform class.



Implementation
    public function get soundTransform():flash.media:SoundTransform
    public function set soundTransform(value:flash.media:SoundTransform):void

See also

time

property 
time:Number  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

The position of the playhead, in seconds.

Flash Media Server For a subscribing stream, the number of seconds the stream has been playing. For a publishing stream, the number of seconds the stream has been publishing. This number is accurate to the thousandths decimal place; multiply by 1000 to get the number of milliseconds the stream has been playing.

For a subscribing stream, if the server stops sending data but the stream remains open, the value of the time property stops advancing. When the server begins sending data again, the value continues to advance from the where it stopped (when the server stopped sending data).

The value of time continues to advance when the stream switches from one playlist element to another. This property is set to 0 when NetStream.play() is called with reset set to 1 or true, or when NetStream.close() is called.



Implementation
    public function get time():Number

See also

Constructor Detail

NetStream

()Constructor
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Creates a stream that can be used for playing video files through the specified NetConnection object.

For information about supported codecs and file formats, see http://www.adobe.com/go/hardware_scaling_en and the www.adobe.com/go/learn_fms_fileformats_en.

Parameters
connection:NetConnection — A NetConnection object.
 
peerID:String (default = "connectToFMS") — This parameter is optional. It is available with Flash Player 10 and later. Set the value to NetStream.CONNECT_TO_FMS for a connection to FMS. For publishing directly to peers, specify NetStream.DIRECT_CONNECTIONS. To play directly from a specific peer, specify that peer's identity (see NetConnection.nearID and NetConnection.farID). The NetConnection.protocol property value must be "rtmfp" if the peerID parameter is set to a peer. The peerID parameter is ignored for non-RTMFP connections. ActionScript uses a default value "connectToFMS" for the peerID parameter to catch when a null value is passed as the parameter to the NetStream() method, programmatically.

However, since the peerID parameter is optional, the following continues to work for progressive playback over a client-server connection:

     new NetStream(nc:NetConnection);
     

Throws
ArgumentError — The NetConnection instance is not connected.

See also


Example  ( How to use this example )

The following code shows a connection to download and display, progressively, a video assigned to the variable videoURL:
            var my_nc:NetConnection = new NetConnection();
            my_nc.connect(null);
            var my_ns:NetStream = new NetStream(my_nc);
            my_ns.play(videoURL);
            var my_video:Video = new Video();
            my_video.attachNetStream(my_ns);
            addChild(my_video);

The following code shows a connection to stream and display a video (assigned to the variable videoURL) on a remote Flash Media Server instance specified in the connect() command:
            var my_nc:NetConnection = new NetConnection();
            my_nc.connect("rtmp://www.yourfmsserver.com/someappname");
            var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS);
            my_ns.play(videoURL);
            var my_video:Video = new Video();
            my_video.attachNetStream(my_ns);
            addChild(my_video);
Method Detail

attachAudio

()method
public function attachAudio(microphone:Microphone):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies an audio stream sent over the NetStream object, from a Microphone object passed as the source. This method is available only to the publisher of the specified stream.

The attachAudio method is intended for use with Flash Media Server. This method is often called by a user sending live audio (or live video with audio) from a client computer to the server.

You can call this method before or after you call the publish() method and actually begin transmitting. Subscribers who want to hear the audio must call the NetStream.play() method. Set the microphone's rate to match that of the sound capture device, and set the silence level threshold via the setSilenceLevel() method. You can control the sound properties (volume and panning) of this audio stream through the microphone object's soundTransform property.

     var conn:NetConnection = new NetConnection();
     conn.connect("rtmp://server.domain.com/path");
     var stream:NetStream = new NetStream(conn);
     var live_mic:Microphone = Microphone.get();
     live_mic.rate = 8;
     live_mic.setSilenceLevel(20,200);
     var soundTrans:SoundTransform = new SoundTransform();
     soundTrans.volume = 6;
     live_mic.soundTransform = soundTrans;
     stream.attachAudio(live_mic);
     stream.publish("mic_stream","live")
     

Parameters

microphone:Microphone — The source of the audio stream to be transmitted.

See also

attachCamera

()method 
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Starts capturing video from a camera, or stops capturing if theCamera is set to null. This method is available only to the publisher of the specified stream.

This method is intended for use with Flash Media Server; for more information, see the class description.

After attaching the video source, you must call NetStream.publish() to begin transmitting. Subscribers who want to display the video must call the NetStream.play() and Video.attachCamera() methods to display the video on the stage.

You can use snapshotMilliseconds to send a single snapshot (by providing a value of 0) or a series of snapshots — in effect, time-lapse footage — by providing a positive number that adds a trailer of the specified number of milliseconds to the video feed. The trailer extends the display time of the video message. By repeatedly calling attachCamera() with a positive value for snapshotMilliseconds, the sequence of alternating snapshots and trailers creates time-lapse footage. For example, you could capture one frame per day and append it to a video file. When a subscriber plays the file, each frame remains onscreen for the specified number of milliseconds and then the next frame is displayed.

The purpose of the snapshotMilliseconds parameter is different from the fps parameter you can set with Camera.setMode(). When you specify snapshotMilliseconds, you control how much time elapses between recorded frames. When you specify fps using Camera.setMode(), you are controlling how much time elapses during recording and playback.

For example, suppose you want to take a snapshot every 5 minutes for a total of 100 snapshots. You can do this in two ways:

  • You can issue a NetStream.attachCamera(myCamera, 500) command 100 times, once every 5 minutes. This takes 500 minutes to record, but the resulting file will play back in 50 seconds (100 frames with 500 milliseconds between frames).
  • You can issue a Camera.setMode() command with an fps value of 1/300 (one per 300 seconds, or one every 5 minutes), and then issue a NetStream.attachCamera(source) command, letting the camera capture continuously for 500 minutes. The resulting file will play back in 500 minutes — the same length of time that it took to record — with each frame being displayed for 5 minutes.

Both techniques capture the same 500 frames, and both approaches are useful; the approach to use depends primarily on your playback requirements. For example, in the second case, you could be recording audio the entire time. Also, both files would be approximately the same size.

Parameters

theCamera:Camera — The source of the video transmission. Valid values are a Camera object (which starts capturing video) and null. If you pass null, the application stops capturing video, and any additional parameters you send are ignored.
 
snapshotMilliseconds:int (default = -1) — Specifies whether the video stream is continuous, a single frame, or a series of single frames used to create time-lapse photography.
  • If you omit this parameter, the application captures all video until you pass a value of null to attachCamera.
  • If you pass 0, the application captures only a single video frame. Use this value to transmit "snapshots" within a preexisting stream. Flash Player or AIR interprets invalid, negative, or nonnumeric arguments as 0.
  • If you pass a positive number, the application captures a single video frame and then appends a pause of the specified length as a trailer on the snapshot. Use this value to create time-lapse photography effects.

close

()method 
public function close():void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Stops playing all data on the stream, sets the time property to 0, and makes the stream available for another use. This method also deletes the local copy of a video file that was downloaded through HTTP. Although the application deletes the local copy of the file that it creates, a copy might persist in the cache directory. If you must completely prevent caching or local storage of the video file, use Flash Media Server.

When using Flash Media Server, this method is invoked implicitly when you call NetStream.play() from a publishing stream or NetStream.publish() from a subscribing stream. Please note that:

  • If close() is called from a publishing stream, the stream stops publishing and the publisher can now use the stream for another purpose. Subscribers no longer receive anything that was being published on the stream, because the stream has stopped publishing.
  • If close() is called from a subscribing stream, the stream stops playing for the subscriber, and the subscriber can use the stream for another purpose. Other subscribers are not affected.
  • You can stop a subscribing stream from playing, without closing the stream or changing the stream type by using flash.net.NetStream.play(false).

See also

onPeerConnect

()method 
public function onPeerConnect(subscriber:NetStream):Boolean

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

Invoked when a peer-publishing stream matches a peer-subscribing stream. Before the subscriber is connected to the publisher, call this method to allow the ActionScript code fine access control for peer-to-peer publishing. The following code shows an example of how to create a callback function for this method:

     var c:Object = new Object;
     c.onPeerConnect = function(subscriber:NetStream):Boolean {
     if (accept)
         return true;
      else
          return false;
      };
      m_netStream.client = c;
     

If a peer-publisher does not implement this method, all peers are allowed to play any published content.

Parameters

subscriber:NetStream

Returns
Boolean

pause

()method 
public function pause():void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Pauses playback of a video stream. Calling this method does nothing if the video is already paused. To resume play after pausing a video, call resume(). To toggle between pause and play (first pausing the video, then resuming), call togglePause().

Starting with Flash Player 9.0.115.0, Flash Player no longer clears the buffer when NetStream.pause() is called. Before Flash Player 9.0.115.0, Flash Player waited for the buffer to fill up before resuming playback, which often caused a delay.

For a single pause, the NetStream.bufferLength property has a limit of either 60 seconds or twice the value of NetStream.bufferTime, whichever value is higher. For example, if bufferTime is 20 seconds, Flash Player buffers until NetStream.bufferLength is the higher value of either 20*2 (40), or 60, so in this case it buffers until bufferLength is 60. If bufferTime is 40 seconds, Flash Player buffers until bufferLength is the higher value of 40*2 (80), or 60, so in this case it buffers until bufferLength is 80 seconds.

The bufferLength property also has an absolute limit. If any call to pause() causes bufferLength to increase more than 600 seconds or the value of bufferTime * 2, whichever is higher, Flash Player flushes the buffer and resets bufferLength to 0. For example, if bufferTime is 120 seconds, Flash Player flushes the buffer if bufferLength reaches 600 seconds; if bufferTime is 360 seconds, Flash Player flushes the buffer if bufferLength reaches 720 seconds.

Tip: You can use NetStream.pause() in code to buffer data while viewers are watching a commercial, for example, and then unpause when the main video starts.

See also

play

()method 
public function play(... arguments):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Plays media files.

For information about supported codecs and file formats, see http://www.adobe.com/go/hardware_scaling_en and the www.adobe.com/go/learn_fms_fileformats_en.

To view video data, create a Video object and call the Video.attachNetStream() method. To stream audio from a microphone, use the NetStream.attachAudio() method. You can use the Microphone object to control some aspects of the audio.

Call the DisplayObjectContainer.addChild() method to route audio to an object on the display list. Then you can create a Sound object to control some aspects of the audio. For more information, see the DisplayObjectContainer.addChild() method.

If the video file cannot be found, the NetStatusEvent object is dispatched.

When you use this method without Flash Media Server, there are security considerations. A file in the local-trusted or local-with-networking sandbox can load and play a video file from the remote sandbox, but cannot access the remote file's data without explicit permission in the form of a URL policy file. Also, you can prevent a SWF file running in Flash Player from using this method by setting the allowNetworking parameter of the the object and embed tags in the HTML page that contains the SWF content.

You cannot connect to commonly reserved ports. For a complete list of blocked ports, see "Restricting Networking APIs" in the security chapter security chapter of the Programming ActionScript 3.0 book.

You cannot connect to commonly reserved ports. For a complete list of blocked ports, see "Restricting Networking APIs" in the security chapter security chapter of the Programming ActionScript 3.0 book.

For more information related to security, see the following:

  • The security chapter in the Programming ActionScript 3.0 book and the latest comments on LiveDocs
  • The security chapter in the Programming ActionScript 3.0 book and the latest comments on LiveDocs
  • The Flash Player Developer Center Topic: Security
  • The NetStream.checkPolicyFile property.

Parameters

... arguments — The location of the media file to play as a string, a URLRequest.url property, or a variable referencing either. In Flash Player and in AIR content outside of the application security sandbox, you can play local video files that are stored in the same directory as the SWF file or in a subdirectory; however, you can't navigate to a higher-level directory.

With Flash Media Server, play() takes the following arguments:

NameRequiredDescription
name:ObjectRequired The name of a recorded file, an identifier for live data published by NetStream.publish(), or false. If false, the stream stops playing and any additional parameters are ignored. For more information on the filename syntax, see the file format table following this table.
start:NumberOptional The start time, in seconds. Allowed values are -2, -1, 0, or a positive number. The default value is -2, which looks for a live stream, then a recorded stream, and if it finds neither, opens a live stream. If -1, plays only a live stream. If 0 or a positive number, plays a recorded stream, beginning start seconds in.
len:Number Optional if start is specified. The duration of the playback, in seconds. Allowed values are -1, 0, or a positive number. The default value is -1, which plays a live or recorded stream until it ends. If 0, plays a single frame that is start seconds from the beginning of a recorded stream. If a positive number, plays a live or recorded stream for len seconds.
reset:Object Optional if len is specified. Whether to clear a playlist. The default value is 1 or true, which clears any previous play calls and plays name immediately. If 0 or false, adds the stream to a playlist. If 2, maintains the playlist and returns all stream messages at once, rather than at intervals. If 3, clears the playlist and returns all stream messages at once.

You can play back the file formats described in the following table. The syntax differs depending on the file format.

File formatSyntaxExample
FLVSpecify the stream name as a string without a filename extension.ns.play("myflvstream");
MP3 or ID3Specify the stream name as a string with the prefix mp3: or id3: and without a filename extension.ns.play("mp3:mymp3stream"); ns.play("id3:myid3data");
MPEG-4-based files (such as F4V and MP4)Specify the stream name as a string with the prefix mp4: with or without the filename extension. The prefix indicates to the server that the file contains H.264-encoded video and AAC-encoded audio within the MPEG-4 Part 14 container format. If the file on the server has a filename extension, specify a filename extension. If a filename extension was specified in the publish() method, specify a filename extension.ns.play("mp4:myvideo.f4v") ns.play("mp4:myvideo.mp4") ns.play("mp4:myvideo")


Events
status:StatusEvent — Dispatched when attempting to play content encrypted with digital rights management (DRM). The value of the code property is "DRM.encryptedFLV".

Throws
SecurityError — Local untrusted SWF files cannot communicate with the Internet. You can work around this restriction by reclassifying this SWF file as local-with-networking or trusted.
 
ArgumentError — At least one parameter must be specified.
 
Error — The NetStream Object is invalid. This may be due to a failed NetConnection.

See also


Example  ( How to use this example )
Flash Media Server This example plays a recorded F4V file, starting at the beginning, for up to 100 seconds. For MPEG-4 files, if the file on the server has a filename extension, specify one in the play() method.
     ns.play("mp4:record1.f4v", 0, 100, true);
     
Flash Media Server This example plays a live FLV stream published by a client, from beginning to end, starting immediately and clearing any previous streams:
     ns.play("stephen");
     

play2

()method 
public function play2(param:NetStreamPlayOptions):void

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

Begins playback of media files, with several options for playback.

This method is an enhanced version of NetStream.play(). Like the play() method, the play2() method begins playback of a media file or queues up media files to create a playlist. When used with Flash Media Server, it can also request that the server switch to a different media file. The transition occurs seamlessly in the client application.

Use the play2() method to switch to a stream with the same content encoded at a different bit rate or to swap out streams from a playlist. Use the NetStreamInfo class to monitor network conditions and switch streams based on the data. You can also switch streams for clients with different capabilities. Using ActionScript to switch streams is called dynamic streaming. For more information, search for "dynamic streaming" in the "Adobe Flash Media Server Developer Guide" at www.adobe.com/go/learn_fms_devguide_en. Adobe built a custom ActionScript class called DynamicStream that extends the NetStream class. You can use the DynamicStream class to implement dynamic streaming in an application instead of writing your own code to detect network conditions. Even if you choose to write your own dynamic streaming code, refer to the DynamicStream class to see a working implementation. Download the class and the class documentation at www.adobe.com/go/fms_tools.

Parameters

param:NetStreamPlayOptions

See also

AIR-only preloadEmbeddedData

()method 
public function preloadEmbeddedData(param:NetStreamPlayOptions):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.5

Extracts any DRM metadata from a locally stored media file.

Use preloadEmbeddedMetaData() as the first step in downloading and caching the DRM vouchers needed for offline playback. When embedded DRM metadata is detected in a media file, a DRMContentData object is passed to the NetStream client onDRMContentData function. This DRMContentData object contains the information needed to obtain the voucher required to play the content. Pass the DRMContentDataObject to the DRMManager loadVoucher() method to download the voucher.

The steps for preloading a DRM voucher include:

  • Create a new NetStream object for preloading the metadata.

  • Assign a callback function to the onDRMContentData property of the NetStream client.
  • Create a new NetStreamPlayOptions object and set its streamName property to the the URL string of the local video file.
  • Call preloadEmbeddedMetadata(), passing in the NetStreamPlayOptions object.
  • In response to the onDRMContentData callback, call the DRMManager loadVoucher() method, passing in the DRMContentData object. If the authenticationMethod property of the DRMContentData object has the value, userNameAndPassWord, then you must authenticate the user on the media rights server before loading the voucher.
  • Close the NetStream used for preloading.

Note: If you use the same NetStream object to both preload metadata and play content, you must wait for the onPlayStatus call generated by the preload operation before starting playback.

Downloaded vouchers are stored in a local cache. Playing content online also downloads and caches vouchers. When a DRM-protected content file is viewed, a cached voucher is retrieved from the local store automatically. Use the DRMManager to manage the voucher cache.

Notes: Preloading DRM metadata through HTTP, HTTPS, or RTMP connections is not supported. You can only preload metadata from files stored on the file system.

Parameters

param:NetStreamPlayOptions — A NetStreamPlayOptions describing the options to use while processing the content file.

See also

publish

()method 
public function publish(name:String = null, type:String = null):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Sends streaming audio, video, and text messages from a client to Flash Media Server, optionally recording the stream during transmission. This method is available only to the publisher of the specified stream.

You can record files in FLV or MPEG-4 format. If you record a file in MPEG-4 format, you must use a flattener tool to edit or play the file in another application. To download the tool, see www.adobe.com/go/fms_tools.

Do not use this method to play a stream that has already been published and recorded. To play a stream, call the NetStream.play() method.

     var subscribeNS:NetStream = new NetStream(myNetConnection);
     subscribeNS.play("streamToPlay");
     

When Flash Media Server records a stream it creates a file and stores it in a subdirectory in the application's directory on the server. Each stream is stored in a directory whose name matches the application instance name passed to NetConnection.connect(). The server creates these directories automatically. For example, the following code connects to the "lectureseries" application and records a stream called "lecture". The file "lecture.flv" is recorded in the applications/lectureseries/streams/_definst_ directory:

     var myNC:NetConnection = new NetConnection();
     myNC.connect("rtmp://fms.example.com/lectureseries");
     var myNS:NetStream = new NetStream(myNC);
     myNS.publish("lecture", "record");
     

The following example shows how to connect to a different instance of the same application. The file "lecture.flv" is recorded in the directory /applications/lectureseries/streams/monday:

     var myNC:NetConnection = new NetConnection();
     myNC.connect("rtmp://fms.example.com/lectureseries/monday");
     var myNS:NetStream = new NetStream(myNC);
     myNS.publish("lecture", "record");
     

This method dispatchs a NetStatusEvent object. For example, if someone is already publishing a stream with the specified name the NetStatusEvent object is dispatched with a code property of "NetStream.Publish.BadName". For more information, see the NetStatusEvent object.

Parameters

name:String (default = null) — A string that identifies the stream. Clients that subscribe to this stream must pass this same name when they call NetStream.play(). Don't follow the stream name with a "/". For example, don't use the stream name "bolero/".

You can publish files in the formats described in the following table. The syntax differs depending on the file format.

File formatSyntaxExample
FLVSpecify the stream name as a string, without a filename extension.ns.publish("myflvstream");
MP3 or ID3Specify the stream name as a string with prefix mp3: or id3:and without a filename extension.ns.publish("mp3:mymp3stream"); ns.publish("id3:myid3data");
MPEG-4-based files (such as F4V and MP4)Specify the stream name as a string with the prefix mp4: with or without the filename extension. The prefix indicates to the server that the file contains H.264-encoded video and AAC-encoded audio within the MPEG-4 Part 14 container format.ns.publish("mp4:myvideo.f4v") ns.publish("mp4:myvideo.mp4"); ns.publish("mp4:myvideo");

 
type:String (default = null) — A string that specifies how to publish the stream. Valid values are "record", "append", and "live". The default value is "live".
  • If you pass "record", Flash Media Server publishes and records live data, saving the recorded data to a new file with a name matching the value passed to the name parameter. If the file exists, it is overwritten.
  • If you pass "append", Flash Media Server publishes and records live data, appending the recorded data to a file with a name that matches the value passed to the name parameter. If no file matching the name parameter is found, it is created.
  • If you omit this parameter or pass "live", Flash Media Server publishes live data without recording it. If a file with a name that matches the value passed to the name parameter exists, it is deleted.

See also

NetConnection.connect()
NetStatusEvent.info

receiveAudio

()method 
public function receiveAudio(flag:Boolean):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies whether incoming audio plays on the stream. This method is available only to clients subscribed to the specified stream, not to the stream's publisher.

This method is intended primarily for use with Flash Media Server; for more information, see the class description.

You can call this method before or after you call the NetStream.play() method and actually begin receiving the stream. For example, you can attach these methods to a button the user clicks to mute or unmute the incoming audio stream.

If the specified stream contains only audio data, passing a value of false to this method stops NetStream.time from further incrementing.

Parameters

flag:Boolean — Specifies whether incoming audio plays on the stream (true) or not (false). The default value is true.

receiveVideo

()method 
public function receiveVideo(flag:Boolean):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies whether incoming video will play on the stream. This method is available only to clients subscribed to the specified stream, not to the stream's publisher.

This method is intended primarily for use with Flash Media Server; for more information, see the class description.

You can call this method before or after you call the NetStream.play() method and actually begin receiving the stream. For example, you can attach these methods to a button the user presses to show or hide the incoming video stream.

If the specified stream contains only video data, passing a value of false to this method stops NetStream.time from further incrementing.

Parameters

flag:Boolean — Specifies whether incoming video plays on this stream (true) or not (false). The default value is true.

receiveVideoFPS

()method 
public function receiveVideoFPS(FPS:Number):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Specifies the frame rate for incoming video. This method is available only to clients subscribed to the specified stream, not to the stream's publisher.

This method is intended primarily for use with Flash Media Server; for more information, see the class description.

You can call this method before or after you call the NetStream.play() method and actually begin receiving the stream. For example, you can attach these methods to a text field where the user can set the incoming video frame rate.

To stop receiving video, pass 0 for FPS. To determine the current frame rate, use NetStream.currentFPS.

If you pass a value to the FPS parameter to limit the frame rate of the video, Flash Media Server attempts to reduce the frame rate while preserving the integrity of the video. The server sends the minimum number of frames needed to satisfy the desired rate between every two keyframes. Keep in mind, however, that I-frames (or intermediate frames) must be sent contiguously; otherwise, the video will be corrupted. Therefore, the desired number of frames is sent immediately and contiguously following a keyframe. Since the frames are not evenly distributed, the motion appears smooth in segments punctuated by stalls.

Parameters

FPS:Number — Specifies the frame rate per second at which the incoming video will play.

AIR-only resetDRMVouchers

()method 
public static function resetDRMVouchers():void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Deletes all locally cached digital rights management (DRM) voucher data.

The application must re-download any required vouchers from the media rights server for the user to be able to access protected content. Calling this function is equivalent to calling the resetDRMVouchers() function of the DRMManager object.


Throws
IOError — The voucher data cannot be deleted.

See also


Example  ( How to use this example )

The following example resets all DRM vouchers:

NetStream.resetDRMVouchers();

resume

()method 
public function resume():void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Resumes playback of a video stream that is paused. If the video is already playing, calling this method does nothing.

See also

seek

()method 
public function seek(offset:Number):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Seeks the keyframe (also called an I-frame in the video industry) closest to the specified location. The keyframe is placed at an offset, in seconds, from the beginning of the stream.

Video streams are usually encoded with two types of frames, keyframes (or I-frames) and P-frames. A keyframe contains an entire image, while a P-frame is an interim frame that provides additional video information between keyframes. A video stream typically has a keyframe every 10 to 50 frames.

On Flash Media Server, the behavior of seek() is controlled by the value of the EnhancedSeek element in the Application.xml configuration file.

If EnhancedSeek is false, the server uses normal seek mode. In normal seek mode, the server starts streaming from the nearest keyframe. For example, if a video has keyframes at 0 seconds and 10 seconds, a seek to 4 seconds causes playback to start at 4 seconds using the keyframe at 0 seconds. The video stays frozen until it reaches the next keyframe at 10 seconds. To get a better seeking experience, you need to reduce the keyframe interval. In normal seek mode, you cannot start the video at a point between the keyframes.

If EnhancedSeek is true, the default value, the server generates a new keyframe at offset based on the previous keyframe and any intervening P-frames. However, this creates a high processing load on the server, and distortion might occur in the generated keyframe. If the video codec is On2, the keyframe before the seek point and any P-frames between the keyframe and the seek point are sent to the client.

Parameters

offset:Number — The approximate time value, in seconds, to move to in a video file. With Flash Media Server, if <EnhancedSeek> is set to true in the Application.xml configuration file (which it is by default), the server generates a keyframe at offset.
  • To return to the beginning of the stream, pass 0 for offset.
  • To seek forward from the beginning of the stream, pass the number of seconds to advance. For example, to position the playhead at 15 seconds from the beginning (or the keyframe before 15 seconds), use myStream.seek(15).
  • To seek relative to the current position, pass NetStream.time + n or NetStream.time - n to seek n seconds forward or backward, respectively, from the current position. For example, to rewind 20 seconds from the current position, use NetStream.seek(NetStream.time - 20).

See also

send

()method 
public function send(handlerName:String, ... arguments):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Sends a message on a published stream to all subscribing clients. This method is available only to the publisher of the specified stream, and is intended for use with Flash Media Server. To process and respond to this message, create a handler on the NetStream object, for example, ns.HandlerName.

Flash Player or AIR does not serialize methods or their data, object prototype variables, or non-enumerable variables. For display objects, Flash Player or AIR serializes the path but none of the data.

You can call the send() method to add data keyframes to a live stream sent to Flash Media Server. A data keyframe is a message a publisher adds to a live stream. Data keyframes are typically used to add metadata to a live stream before data is captured for the stream from camera and microphone. A publisher can add a data keyframe at any time while the live stream is being published. The data keyframe is saved in the server's memory as long as the publisher is connected to the server.

Clients who are subscribed to the live stream before a data keyframe is added receive the keyframe as soon as it is added. Clients who subscribe to the live stream after the data keyframe is added receive the keyframe when they subscribe.

To add a keyframe of metadata to a live stream sent to Flash Media Server, use @setDataFrame as the handler name, followed by two additional arguments, for example:

     var ns:NetStream = new NetStream(nc);
     ns.send("@setDataFrame", "onMetaData", metaData);
     

The @setDataFrame argument refers to a special handler built in to Flash Media Server. The onMetaData argument is the name of a callback function in your client application that listens for the onMetaData event and retrieves the metadata. The third item, metaData, is an instance of Object or Array with properties that define the metadata values. Publishers should set property names that subscribers can easily understand; see the Flash Media Server Developer Guide for a list of suggested property names.

Use @clearDataFrame to clear a keyframe of metadata that has already been set in the stream:

     ns.send("@clearDataFrame", "onMetaData");
     

Parameters

handlerName:String — The message to be sent; also the name of the ActionScript handler to receive the message. The handler name can be only one level deep (that is, it can't be of the form parent/child) and is relative to the stream object. Do not use a reserved term for a handler name. For example, using "close" as a handler name will cause the method to fail. With Flash Media Server, use @setDataFrame to add a keyframe of metadata to a live stream or @clearDataFrame to remove a keyframe.
 
... arguments — Optional arguments that can be of any type. They are serialized and sent over the connection, and the receiving handler receives them in the same order. If a parameter is a circular object (for example, a linked list that is circular), the serializer handles the references correctly. With Flash Media Server, if @setDataFrame is the first argument, use onMetaData as the second argument; for the third argument, pass an instance of Object or Array that has the metadata set as properties. See the Flash Media Server Developer Guide for a list of suggested property names. With @clearDataFrame as the first argument, use onMetaData as the second argument and no third argument.

See also


Example  ( How to use this example )

The following example creates two NetStream objects. One is used to publish a live stream to the server, while the other subscribes to the stream.
package {
   import flash.display.Sprite;
   import flash.net.NetConnection;
   import flash.net.NetStream;
   import flash.events.NetStatusEvent;
   import flash.media.Video;
   import flash.utils.setTimeout;

 
   public class TestExample extends Sprite
   {
     var nc:NetConnection = new NetConnection();
     var ns1:NetStream;
     var ns2:NetStream;
     var vid:Video = new Video(300,300);
     var obj:Object = new Object();
 
     public function TestExample() {
        nc.objectEncoding = 0;
        nc.addEventListener("netStatus", onNCStatus);
        nc.connect("rtmp://localhost/FlashVideoApp");
        addChild(vid); 
     }
  
     function onNCStatus(event:NetStatusEvent):void {
       switch (event.info.code) {
           case "NetConnection.Connect.Success":
               trace("You've connected successfully");
               ns1 = new NetStream(nc);
               ns2 = new NetStream(nc);
               
               ns1.client = new CustomClient();
               ns1.publish("dummy", "live");
    
               ns2.play("dummy");
               ns2.client = new CustomClient();
               vid.attachNetStream(ns2);
               setTimeout(sendHello, 3000);
               break;
              
           case "NetStream.Publish.BadName":
               trace("Please check the name of the publishing stream" );
               break;
        }   
     }

     function sendHello():void {
         ns1.send("myFunction", "hello");
     }       
   }
 }
 
 class CustomClient {
    public function myFunction(event:String):void {
       trace(event);
    }
 }

The following example creates metadata and adds it to a live stream:
private function netStatusHandler(event:NetStatusEvent):void {
     switch (event.info.code) {  
        case "NetStream.Publish.Start":
            var metaData:Object = new Object();
            metaData.title = "myStream";
            metaData.width = 400;
            metaData.height = 200;
            ns.send("@setDataFrame", "onMetaData", metaData);
            ns.attachCamera( Camera.getCamera() );
            ns.attachAudio( Microphone.getMicrophone() );        
    }
}

To respond to a data keyframe added to a video, the client needs to define an onMetaData event handler. The onMetaData event handler is not registered with addEventListener(), but instead is a callback function with the name onMetaData, for example:
 public function onMetaData(info:Object):void {
    trace("width: " + info.width);
    trace("height: " + info.height);
 }

This example shows how to create a playlist on the server:
 // Create a NetStream for playing
 var my_ns:NetStream = new NetStream(my_nc);
 my_video.attachNetStream(my_ns);
 
 // Play the stream record1
 my_ns.play("record1", 0, -1, true);
 
 // Switch to the stream live1 and play for 5 seconds.  
 // Since reset is false, live1 will start to play after record1 is done.
 my_ns.play("live1", -1 , 5, false);

If the recorded video file contains only data messages, you can either play the video file at the speed at which it was originally recorded, or you can get the data messages all at once.
 //To play at normal speed
 var my_ns:NetStream = new NetStream(my_nc);
 my_ns.play("log", 0, -1);
 
 //To get the data messages all at once
 my_ns.play("log", 0, -1, 3);

AIR-only setDRMAuthenticationCredentials

()method 
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Sets the DRM authentication credentials needed for viewing the underlying encrypted content.

The setDRMAuthenticationCredentials() method must provide credentials that match those known and accepted by the content provider or the proxy server. These are the same credentials used by the user when obtaining the permission to view the content.

Parameters

userName:String — A valid user name credential.
 
password:String — The password credential corresponding to the user name provided.
 
type:String — A string that specifies what type of authentication credentials are provided. Valid values are "drm" and "proxy". The default value is "drm".
  • With "drm" authentication type, the credentials provided are authenticated against Flash Media Rights Management Server (FMRMS).
  • With "proxy" authentication type, the credentials provided are authenticated against the proxy server and must match those required by the proxy server. For example, the "proxy" option allows the application to authenticate against a proxy server if an enterprise requires such a step before the user can access the Internet. Unless anonymous authentication is used, after the proxy authentication, the user still needs to authenticate against FMRMS in order to obtain the voucher and play the content. You can use setDRMAuthenticationcredentials() a second time, with "drm" option, to authenticate against FMRMS.

See also

togglePause

()method 
public function togglePause():void

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Pauses or resumes playback of a stream. The first time you call this method, it pauses play; the next time, it resumes play. You could use this method to let users pause or resume playback by pressing a single button.

See also

Event Detail

asyncError

Event
Event Object Type: flash.events.AsyncErrorEvent
property AsyncErrorEvent.type = flash.events.AsyncErrorEvent.ASYNC_ERROR

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Dispatched when an exception is thrown asynchronously — that is, from native asynchronous code. This event is dispatched when a server calls a method on the client that is not defined.

The AsyncErrorEvent.ASYNC_ERROR constant defines the value of the type property of an asyncError event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
targetThe object dispatching the event.
errorThe error that triggered the event.

See also

AIR-only 

drmAuthenticate

Event  
Event Object Type: flash.events.DRMAuthenticateEvent
property DRMAuthenticateEvent.type = flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Dispatched when a NetStream object tries to play a digital rights management (DRM) encrypted content that requires a user credential for authentication before playing.

Use the setDRMAuthenticationCredentials() method of the NetStream object to authenticate the user. If user authentication failed, the application will retry authentication and dispatch a new DRMAuthenticateEvent event for the NetStream object.

The DRMAuthenticateEvent.DRM_AUTHENTICATE constant defines the value of the type property of a DRMAuthenticateEvent object.

This event has the following properties:

PropertyValue
authenticationTypeIndicates whether the supplied credentials are for authenticating against the Flash Media Rights Management Server (FMRMS) or a proxy server.
bubblesfalse
cancelablefalse there is no default behavior to cancel.
headerThe encrypted content file header provided by the server.
netstreamThe NetStream object that initiated this event.
passwordPromptA prompt for a password credential, provided by the server.
targetThe NetStream object.
urlPromptA prompt for a URL to display, provided by the server.
usernamePromptA prompt for a user name credential, provided by the server.

See also

AIR-only 

drmError

Event  
Event Object Type: flash.events.DRMErrorEvent
property DRMErrorEvent.type = flash.events.DRMErrorEvent.DRM_ERROR

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Dispatched when a NetStream object, trying to play a digital rights management (DRM) encrypted file, encounters a DRM-related error. For example, a DRMErrorEvent object is dispatched when the user authorization fails. This may be because the user has not purchased the rights to view the content or because the content provider does not support the viewing application.

The DRMErrorEvent.DRM_ERROR constant defines the value of the type property of a drmError event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
errorIDA numerical error code assigned to the problem.
subErrorIDAn error code that indicates more detailed information about the underlying problem.
targetThe NetStream object.

See also

AIR-only 

drmStatus

Event  
Event Object Type: flash.events.DRMStatusEvent
property DRMStatusEvent.type = flash.events.DRMStatusEvent.DRM_STATUS

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Dispatched when the digital rights management (DRM) encrypted content begins playing (when the user is authenticated and authorized to play the content).

DRMStatusEvent object contains information related to the voucher, such as whether the content can be made available offline or when the voucher will expire and the content can no longer be viewed.

The DRMStatusEvent.DRM_STATUS constant defines the value of the type property of a drmStatus event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
detailA string explaining the context of the status event.
isAnonymousIndicates whether the content protected with DRM encryption is available without requiring a user to provide authentication credentials.
isAvailableOfflineIndicates whether the content protected with DRM encryption is available offline.
offlineLeasePeriodThe remaining number of days that content can be viewed offline.
policiesA custom object of the DRM status event.
targetThe NetStream object.
voucherEndDateThe absolute date on which the voucher expires and the content can no longer be viewed by users
contentDataThe DRMContentData for the content
voucherThe DRMVoucher object for the content.
isLocalIndicates whether the content is stored on the local file system

See also

ioError

Event  
Event Object Type: flash.events.IOErrorEvent
property IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Dispatched when an input or output error occurs that causes a network operation to fail.

Defines the value of the type property of an ioError event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
errorIDA reference number associated with the specific error (AIR only).
targetThe network object experiencing the input/output error.
textText to be displayed as an error message.

netStatus

Event  
Event Object Type: flash.events.NetStatusEvent
property NetStatusEvent.type = flash.events.NetStatusEvent.NET_STATUS

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Dispatched when a NetStream object is reporting its status or error condition. The netStatus event contains an info property, which is an information object that contains specific information about the event, such as if a connection attempt succeeded or failed.

Defines the value of the type property of a netStatus event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
infoAn object with properties that describe the object's status or error condition.
targetThe NetConnection or NetStream object reporting its status.

See also

onCuePoint

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Establishes a listener to respond when an embedded cue point is reached while playing a video file. You can use the listener to trigger actions in your code when the video reaches a specific cue point, which lets you synchronize other actions in your application with video playback events. For information about video file formats supported by Flash Media Server, see the www.adobe.com/go/learn_fms_fileformats_en.

onCuePoint is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for, or process onCuePoint as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

The associated event listener is triggered after a call to the NetStream.play() method, but before the video playhead has advanced.

The following types of cue points can be embedded in a video file:

  • A navigation cue point specifies a keyframe within the video file and the cue point's time property corresponds to that exact keyframe. Navigation cue points are often used as bookmarks or entry points to let users navigate through the video file.
  • An event cue point is specified by time, whether or not that time corresponds to a specific keyframe. An event cue point usually represents a time in the video when something happens that could be used to trigger other application events.

The onCuePoint event object has the following properties:

PropertyDescription
nameThe name given to the cue point when it was embedded in the video file.
parametersAn associative array of name/value pair strings specified for this cue point. Any valid string can be used for the parameter name or value.
timeThe time in seconds at which the cue point occurred in the video file during playback.
typeThe type of cue point that was reached, either navigation or event.

You can define cue points in a video file when you first encode the file, or when you import a video clip in the Flash authoring tool by using the Video Import wizard.

The onMetaData event also retrieves information about the cue points in a video file. However the onMetaData event gets information about all of the cue points before the video begins playing. The onCuePoint event receives information about a single cue point at the time specified for that cue point during playback.

Generally, to have your code respond to a specific cue point at the time it occurs, use the onCuePoint event to trigger some action in your code.

You can use the list of cue points provided to the onMetaData event to let the user start playing the video at predefined points along the video stream. Pass the value of the cue point's time property to the NetStream.seek() method to play the video from that cue point.

See also

AIR-only 

onDRMContentData

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.5

Establishes a listener to respond when AIR extracts DRM content metadata embedded in a media file.

A DRMContentData object contains the information needed to obtain a voucher required to play a DRM-protected media file. Use the DRMManager class to download the voucher with this information.

onDRMContentData is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event when preloading embedded data from a local media file. For more information, see the NetStream class description. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for, or process onDRMContentData as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

See also

onImageData

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9.0.115.0

Establishes a listener to respond when Flash Player receives image data as a byte array embedded in a media file that is playing. The image data can produce either JPEG, PNG, or GIF content. Use the flash.display.Loader.loadBytes() method to load the byte array into a display object.

onImageData is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for, or process onImageData as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

The associated event listener is triggered after a call to the NetStream.play() method, but before the video playhead has advanced.

The onImageData event object contains the image data as a byte array sent through an AMF0 data channel.


Example  ( How to use this example )

The code in this example uses the Netstream.client property to handle the callback functions for onTextData and onImageData. The onImageDataHandler() function uses the onImageData event object imageData to store the byte array. And, the onTextDataHandler() function uses the onTextData event object textData to store the pieces of text data (each piece of data is a property of the textData object).

You need to substitute a real location to a media file with text or image metadata for the location "yourURL" in the code.

You can also handle image and text data using a custom class. See the article Handling metadata and cue points in Flash video for more information and examples.

package {
    import flash.display.*;
    import flash.net.*;
    import flash.media.*;
    import flash.system.*;
    import flash.events.*;

        public class OnTextDataExample extends Sprite {
                                              
            public function OnTextDataExample():void {

                var customClient:Object = new Object();
                customClient.onImageData = onImageDataHandler;           
                customClient.onTextData = onTextDataHandler;               

                var my_nc:NetConnection = new NetConnection();
                my_nc.connect(null);
                var my_ns:NetStream = new NetStream(my_nc);
                my_ns.play("yourURL");
                my_ns.client = customClient;

                var my_video:Video = new Video();
                my_video.attachNetStream(my_ns);
                addChild(my_video);

            }

            public function onImageDataHandler(imageData:Object):void {

                trace("imageData length: " + imageData.data.length);
                var imageloader:Loader = new Loader();           
                imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
                addChild(imageloader);
            }

    
            public function onTextDataHandler(textData:Object):void {

                trace("--- textData properties ----");
                var key:String;

                for (key in textData) {
                    trace(key + ": " + textData[key]);
                }
            }

        }

}

See also

onMetaData

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Establishes a listener to respond when Flash Player receives descriptive information embedded in the video being played. For information about video file formats supported by Flash Media Server, see the www.adobe.com/go/learn_fms_fileformats_en.

onMetaData is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description and the NetStream.client property. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for or process onMetaData as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

The Flash Video Exporter utility (version 1.1 or later) embeds a video's duration, creation date, data rates, and other information into the video file itself. Different video encoders embed different sets of meta data.

The associated event listener is triggered after a call to the NetStream.play() method, but before the video playhead has advanced.

In many cases, the duration value embedded in stream metadata approximates the actual duration but is not exact. In other words, it does not always match the value of the NetStream.time property when the playhead is at the end of the video stream.

The event object passed to the onMetaData event handler contains one property for each piece of data.

See also

onPlayStatus

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9

Establishes a listener to respond when a NetStream object has completely played a stream. The associated event object provides information in addition to what's returned by the netStatus event. You can use this property to trigger actions in your code when a NetStream object has switched from one stream to another stream in a playlist (as indicated by the information object NetStream.Play.Switch) or when a NetStream object has played to the end (as indicated by the information object NetStream.Play.Complete).

onPlayStaus is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for, or process onPlayStatus as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

This event can return an information object with the following properties:

Code propertyLevel propertyMeaning
NetStream.Play.Switch"status"The subscriber is switching from one stream to another in a playlist.
NetStream.Play.Complete"status"Playback has completed.
NetStream.Play.TransitionComplete"status"The subscriber is switching to a new stream as a result of stream bit-rate switching

See also

onTextData

Event  

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9.0.115.0

Establishes a listener to respond when Flash Player receives text data embedded in a media file that is playing. The text data is in UTF-8 format and can contain information about formatting based on the 3GP timed text specification.

onTextData is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for, or process onTextData as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

The associated event listener is triggered after a call to the NetStream.play() method, but before the video playhead has advanced.

The onTextData event object contains one property for each piece of text data.


Example  ( How to use this example )

The code in this example uses the Netstream.client property to handle the callback functions for onTextData and onImageData. The onImageDataHandler() function uses the onImageData event object imageData to store the byte array. And, the onTextDataHandler() function uses the onTextData event object textData to store the pieces of text data (each piece of data is a property of the textData object).

You need to substitute a real location to a media file with text or image metadata for the location "yourURL" in the code.

You can also handle image and text data using a custom class. See the article Handling metadata and cue points in Flash video for more information and examples.

package {
    import flash.display.*;
    import flash.net.*;
    import flash.media.*;
    import flash.system.*;
    import flash.events.*;

        public class OnTextDataExample extends Sprite {
                                              
            public function OnTextDataExample():void {

                var customClient:Object = new Object();
                customClient.onImageData = onImageDataHandler;           
                customClient.onTextData = onTextDataHandler;               

                var my_nc:NetConnection = new NetConnection();
                my_nc.connect(null);
                var my_ns:NetStream = new NetStream(my_nc);
                my_ns.play("yourURL");
                my_ns.client = customClient;

                var my_video:Video = new Video();
                my_video.attachNetStream(my_ns);
                addChild(my_video);

            }

            public function onImageDataHandler(imageData:Object):void {

                trace("imageData length: " + imageData.data.length);
                var imageloader:Loader = new Loader();           
                imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
                addChild(imageloader);
            }

    
            public function onTextDataHandler(textData:Object):void {

                trace("--- textData properties ----");
                var key:String;

                for (key in textData) {
                    trace(key + ": " + textData[key]);
                }
            }

        }

}

See also

onXMPData

Event  

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

Establishes a listener to respond when Flash Player receives information specific to Adobe Extensible Metadata Platform (XMP) embedded in the video being played. For information about video file formats supported by Flash Media Server, see the www.adobe.com/go/learn_fms_fileformats_en.

onXMPData is actually a property of the NetStream.client object. It isn't an event, but is listed in the Events section because it responds to a data event, either when streaming media using Flash Media Server or during FLV file playback. For more information, see the NetStream class description and the NetStream.client property. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for or process onMetaData as an event. Rather, you must define a single callback function and attach it directly to one of the following objects:

  • The object that the client property of a NetStream instance references.
  • An instance of a NetStream subclass. NetStream is a sealed class, which means that properties or methods cannot be added to a NetStream object at runtime. However, you can create a subclass of NetStream and define your event handler in the subclass or make the subclass dynamic and add the event handler function to an instance of the subclass.

The associated event listener is triggered after a call to the NetStream.play() method, but before the video playhead has advanced.

The object passed to the onXMPData() event handling function has one data property, which is a string. The string is generated from a top-level UUID box. (The 128-bit UUID of the top level box is BE7ACFCB-97A9-42E8-9C71-999491E3AFAC.) This top-level UUID box contains exactly one XML document represented as a null-terminated UTF-8 string.

See also

AIR-only 

status

Event  
Event Object Type: flash.events.StatusEvent
property StatusEvent.type = flash.events.StatusEvent.STATUS

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Dispatched when the application attempts to play content encrypted with digital rights management (DRM), by invoking the NetStream.play() method. The value of the status code property will be "DRM.encryptedFLV".

Defines the value of the type property of a status event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
codeA description of the object's status.
currentTargetThe object that is actively processing the Event object with an event listener.
levelThe category of the message, such as "status", "warning" or "error".
targetThe object reporting its status.

See also

Constant Detail

CONNECT_TO_FMS

Constant
public static const CONNECT_TO_FMS:String = "connectToFMS"

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

A static object used as a parameter to the constructor for a NetStream instance. It is the default value of the second parameter in the NetStream constructor; it is not used by the application for progressive media playback. When used, this parameter causes the constructor to make a connection to a Flash Media Server instance.

DIRECT_CONNECTIONS

Constant 
public static const DIRECT_CONNECTIONS:String = "directConnections"

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10, AIR 1.5

Creates a peer-to-peer publisher connection. Pass this string for the second (optional) parameter to the constructor for a NetStream instance. With this string, an application can create a NetStream connection for the purposes of publishing audio and video to clients.

NetConnectionExample.as

The following example uses a Video object with the NetConnection and NetStream classes to load and play an FLV file. To run this example, you need an FLV file whose name and location match the variable passed to videoURL; in this case, an FLV file called Video.flv that is in the same directory as the SWF file.

In this example, the code that creates the Video and NetStream objects and calls the Video.attachNetStream() and NetStream.play() methods is placed in a handler function. The handler is called only if the attempt to connect to the NetConnection object is successful; that is, when the netStatus event returns an info object with a code property that indicates success. It is recommended that you wait for a successful connection before you call NetStream.play().


package {
    import flash.display.Sprite;
    import flash.events.NetStatusEvent;
    import flash.events.SecurityErrorEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.Event;

    public class NetConnectionExample extends Sprite {
        private var videoURL:String = "Video.flv";
        private var connection:NetConnection;
        private var stream:NetStream;

        public function NetConnectionExample() {
            connection = new NetConnection();
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            connection.connect(null);
        }

        private function netStatusHandler(event:NetStatusEvent):void {
            switch (event.info.code) {
                case "NetConnection.Connect.Success":
                    connectStream();
                    break;
                case "NetStream.Play.StreamNotFound":
                    trace("Stream not found: " + videoURL);
                    break;
            }
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }

        private function connectStream():void {
            var stream:NetStream = new NetStream(connection);
            stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            stream.client = new CustomClient();
            var video:Video = new Video();
            video.attachNetStream(stream);
            stream.play(videoURL);
            addChild(video);
        }
    }
}

class CustomClient {
    public function onMetaData(info:Object):void {
        trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
    }
    public function onCuePoint(info:Object):void {
        trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
    }
}