パッケージflash.net
public class NetStream
継承NetStream Inheritance EventDispatcher Inheritance Object

NetStream クラスは、Flash Player と、Adobe の Macromedia Flash Media Server 2 や Adobe Flex などのサーバー間の単方向ストリーミング接続、あるいは NetConnection オブジェクトで使用できる接続を介した Flash Player とローカルファイルシステム間の単方向ストリーミング接続を開きます。A NetStream オブジェクトは、NetConnection オブジェクト内のチャンネルに似ています。このチャンネルでは、NetStream.publish() を使用してオーディオデータやビデオデータをパブリッシュできます。あるいは、NetStream.play() を使用して、パブリッシュされたストリームにサブスクライブし、データを受信することができます。ライブ (リアルタイム) データおよび以前に記録したデータをパブリッシュすることも、再生することもできます。NetStream オブジェクトを使用して、サブスクライブしているすべてのクライアントにテキストメッセージを送信することもできます。NetStream.send() メソッドを参照してください。

Flash ドキュメント内にビデオを埋め込むよりも、外部の FLV ファイルを再生した方が、パフォーマンスとメモリ管理の効率がよくなる、ビデオと Flash のフレームレートを独立化できるなどのメリットがあります。このクラスには、ファイルのロードおよび再生時にその進捗を追跡し、ユーザーが再生を制御 (停止、一時停止など) できるようにするための、さまざまなメソッドおよびプロパティが用意されています。

NetStream クラス内のプロパティとメソッドの中には、主に Flash Media Server や Flex などのサーバーで使用することを目的としたものがあります。これらのプロパティとメソッドには、サーバーサイド機能を追加できます。詳細については、 Flash Media Server マニュアルの「NetStream class」を参照してください。

ビデオ再生の詳細については、『ActionScript 2.0 の学習』の「外部 FLV ファイルのダイナミック再生」を参照してください。

ストリーミングオーディオまたはビデオの一般的なワークフローです。 次の手順では、リアルタイムオーディオとビデオのパブリッシュに必要な、通常の一連のアクションを概説します。

  1. NetConnection オブジェクトを作成します。
  2. NetConnection.connect() メソッドを使用して、アプリケーションインスタンスをサーバーに接続します。
  3. NetStream オブジェクトを作成して、その接続を使用するデータストリームを作成します。
  4. NetStream.attachAudio()メソッドを使用して、このストリームを介したオーディオのキャプチャおよび送信を行います。このストリームを介してビデオをキャプチャおよび送信する場合は、NetStream.attachVideo() メソッドを使用します。
  5. NetStream.publish() メソッドを使用して、このストリームに一意の名前を付けます。また、ストリームを介してサーバーにデータを送信します。これにより、他のユーザーがデータを受信できるようになります。データをパブリッシュしたときに、そのデータを記録することもできます。これにより、後でデータを再生することができます。

    このストリームにサブスクライブする SWF ファイルでは、play() を呼び出すときに publish() に渡される名前を使用します。また、発行者と同じ NetConnection.connect() メソッドを呼び出します。ビデオをストリーミングするには、Video.attachNetStream() メソッドを呼び出す必要があります。また、ビデオを再生するには、NetStream.play() メソッドを呼び出す必要があります。

例の表示

関連項目

flash.media.Video
flash.net.NetConnection
send()


パブリックプロパティ
 プロパティ定義
  bufferLength : Number
[read-only] バッファにデータが格納されてからの経過秒数です。
NetStream
  bufferTime : Number
ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。
NetStream
  bytesLoaded : uint
[read-only] 既に Player にロードされているデータのバイト数です。
NetStream
  bytesTotal : uint
[read-only] Player にロードされるファイルの総バイト数です。
NetStream
  checkPolicyFile : Boolean
FLV ファイルのロードを開始する前に、Flash Player が、ロードされる FLV ファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。
NetStream
  client : Object
コールバックメソッドを呼び出すオブジェクトを指定します。
NetStream
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  currentFPS : Number
[read-only] 1 秒あたりの表示フレーム数です。
NetStream
  liveDelay : Number
[read-only] ライブ (バッファリングされていない) モードでサブスクライブしているストリームバッファ内にあるデータの秒数です。
NetStream
  objectEncoding : uint
[read-only] この NetStream オブジェクトのエンコード (AMF バージョン) です。
NetStream
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  soundTransform : SoundTransform
この NetStream オブジェクトのサウンドを制御します。
NetStream
  time : Number
[read-only] 再生ヘッドの位置 (秒単位) です。
NetStream
パブリックメソッド
 メソッド定義
  NetStream(connection:NetConnection)
指定された NetConnection オブジェクトを使用して、FLV ファイルを再生するためのストリームを生成します。
NetStream
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  attachAudio(microphone:Microphone):void
ソースとして渡される Microphone オブジェクトから NetStream オブジェクトを介して送信されるオーディオストリームを指定します。
NetStream
  attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
指定のソースからビデオのキャプチャを開始します。または、theCameranull に設定されると、キャプチャを停止します。
NetStream
  close():void
ストリーム上のすべてのデータの再生を停止し、time プロパティを 0 に設定して、他のユーザーがストリームにアクセスできるようにします。
NetStream
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  pause():void
ビデオストリームの再生を一時停止します。
NetStream
  play(... arguments):void
外部オーディオファイルまたはビデオファイル (FLV) の再生を開始します。
NetStream
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
  publish(name:String = null, type:String = null):void
クライアントから Flash Media Server 2 などのサーバーへ、ストリーミングオーディオ、ビデオ、およびテキストメッセージを送信します。送信中にストリームを録音することもできます。
NetStream
  receiveAudio(flag:Boolean):void
ストリーム上で着信オーディオが再生されるかどうかを示します。
NetStream
  receiveVideo(flag:Boolean):void
ストリーム上で着信ビデオが再生されるかどうかを示します。
NetStream
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  resume():void
再生を一時停止していたビデオストリームを再開します。
NetStream
  seek(offset:Number):void
指定の位置、すなわちストリームの先頭からのオフセット (秒単位) に最も近いキーフレームをシークします。
NetStream
  send(handlerName:String, ... arguments):void
指定されたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。
NetStream
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  togglePause():void
ストリームの再生を一時停止または再開します。
NetStream
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
  asyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。NetStream
  ioError 入出力エラーが発生してネットワーク処理が失敗したときに送出されます。NetStream
  netStatus NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。NetStream
  onCuePoint FLV ファイルの再生中に、埋め込みキューポイントに達すると呼び出されます。NetStream
  onMetaData 再生中の FLV ファイルに埋め込まれている説明情報を Flash Player が受け取ったときに送出されます。NetStream
  onPlayStatus NetStream オブジェクトによるストリームの再生が終了したときに送出されます。NetStream
プロパティの詳細
bufferLengthプロパティ
bufferLength:Number  [read-only]

バッファにデータが格納されてからの経過秒数です。このプロパティを bufferTime プロパティと組み合わせることにより、バッファが満たされるまでの推定時間を見積もることができます。たとえば、バッファにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。

実装
    public function get bufferLength():Number

関連項目

bufferTimeプロパティ 
bufferTime:Number  [read-write]

ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。たとえば、ストリームの最初の 15 秒間を中断することなく再生するには、bufferTime を 15 に設定します。この場合、Flash Player はデータを 15 秒間バッファリングしてからストリームの再生を開始します。

デフォルト値は 0.1 (1/10 秒) です。バッファ内のデータの経過秒数を調べるには、bufferLength プロパティを使用します。

実装
    public function get bufferTime():Number
    public function set bufferTime(value:Number):void

関連項目

bytesLoadedプロパティ 
bytesLoaded:uint  [read-only]

既に Player にロードされているデータのバイト数です。このプロパティを bytesTotal プロパティと組み合わせることにより、バッファが満たされるまでの推定時間を見積もることができます。たとえば、バッファにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。

実装
    public function get bytesLoaded():uint

関連項目

bytesTotalプロパティ 
bytesTotal:uint  [read-only]

Player にロードされるファイルの総バイト数です。

実装
    public function get bytesTotal():uint

関連項目

checkPolicyFileプロパティ 
checkPolicyFile:Boolean  [read-write]

FLV ファイルのロードを開始する前に、Flash Player が、ロードされる FLV ファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。このプロパティは、プログレッシブビデオダウンロードに NetStream オブジェクト (スタンドアローン FLV ファイル) を使用する場合、または呼び出し元の SWF ファイルの専用ドメイン外にある FLV ファイルをロードする場合に適用します。このプロパティは、NetStream オブジェクトを使用して RTMP アセットを取得する場合には無視されます。

呼び出し元の SWF ファイルのドメイン外から FLV ファイルをロードし、BitmapData.draw() メソッドを使用して、ビデオにピクセルレベルでアクセスする必要がある場合は、このプロパティを true に設定します。ロード時に checkPolicyFile プロパティを true に設定しないで BitmapData.draw() を呼び出した場合、SecurityError 例外を受け取る場合があります。これは、必要なポリシーファイルがダウンロードされていないためです。

ロードするビデオへのピクセルレベルのアクセスが必要ない場合は、checkPolicyFiletrue に設定しないでください。ポリシーファイルの確認はネットワーク帯域幅の浪費になり、ダウンロードの開始が遅れる場合があります。

checkPolicyFiletrue に設定して NetStream.play() メソッドを呼び出す場合、Flash Player は、関連するクロスドメインポリシーファイルを正常にダウンロードするか、NetStream.play() の呼び出しで指定したオブジェクトのダウンロードを開始する前に、そのようなポリシーファイルが存在しないことを判別しておく必要があります。ポリシーファイルの存在を確認するため、Flash Player は次のアクションをこの順番で実行します。

  1. Flash Player は、既にダウンロードされているポリシーファイルを考慮します。
  2. Flash Player は、Security.loadPolicyFile() メソッドの呼び出しで指定した保留中ポリシーファイルをダウンロードしようとします。
  3. Flash Player は NetStream.play() に渡された URL に対応するデフォルトの場所からポリシーファイルをダウンロードしようとします。これは、その URL と同じサーバー上の /crossdomain.xml です。

どのような場合も、Flash Player では、該当するポリシーファイルがビデオのサーバー上に存在しており、ポリシーファイルの場所に基づいて play() に渡された URL にあるオブジェクトへのアクセスを提供し、<allow-access-from> タグによって呼び出し元 SWF ファイルのドメインがビデオにアクセスできるようにする必要があります。

checkPolicyFiletrue に設定した場合、Flash Player はビデオをダウンロードする前に、ポリシーファイルが検証されるまで待機します。NetStream オブジェクトから onMetaData イベントまたは NetStatus イベントを受け取るまで、BitmapData.draw() を呼び出すなどの、ビデオデータに対するピクセルレベルの操作は実行を待つ必要があります。

checkPolicyFiletrue に設定し、関連するポリシーファイルが見つからない場合、ポリシーファイルを必要とする操作を実行するまでエラーは表示されません。その後、Flash Player は SecurityError 例外をスローします。

サーバーサイド HTTP リダイレクトを使用する URL から FLV ファイルをダウンロードする場合は、checkPolicyFile に注意してください。Flash Player は、NetStream.play() で指定する初期 URL に対応するポリシーファイルを取得しようとします。最終的な FLV ファイルが HTTP リダイレクトによって別の URL から取得される場合、最初にダウンロードされたポリシーファイルは FLV ファイルの最終的な URL に適用できないことがあります。この URL はセキュリティ判定において重要です。

ポリシーファイルの詳細については、『ActionScript 3.0 のプログラミング』の「Flash Player セキュリティ」の章を参照してください。

実装
    public function get checkPolicyFile():Boolean
    public function set checkPolicyFile(value:Boolean):void

関連項目

clientプロパティ 
client:Object  [read-write]

コールバックメソッドを呼び出すオブジェクトを指定します。デフォルトのオブジェクトは、作成される NetStream オブジェクト this です。client プロパティを別のオブジェクトに設定する場合は、コールバックメソッドをその別のオブジェクトで呼び出すことができます。

実装
    public function get client():Object
    public function set client(value:Object):void

Throws
TypeError client プロパティは、null 以外のオブジェクトに設定する必要があります。
currentFPSプロパティ 
currentFPS:Number  [read-only]

1 秒あたりの表示フレーム数です。複数のシステム上で再生できるように FLV ファイルを書き出す場合、テスト中にこの値をチェックすることで、ファイルの書き出し時にどの程度の圧縮が必要かを見極めることができます。

実装
    public function get currentFPS():Number
liveDelayプロパティ 
liveDelay:Number  [read-only]

ライブ (バッファリングされていない) モードでサブスクライブしているストリームバッファ内にあるデータの秒数です。このプロパティは、現在のネットワーク転送が遅延していることを示します (遅延時間)。

このプロパティは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

このプロパティの値を取得して、ストリームの転送品質を大まかに判断し、それをユーザーに伝えることができます。

実装
    public function get liveDelay():Number
objectEncodingプロパティ 
objectEncoding:uint  [read-only]

この NetStream オブジェクトのエンコード (AMF バージョン) です。NetStream オブジェクトは、関連付けされた NetConnection オブジェクトからその objectEncoding 値を継承します。ActionScript 3.0 SWF ファイルで Flash Player 9 以前にリリースされたサーバーと通信する必要がある場合は、このプロパティを理解することが重要です。詳細については、NetConnection クラスの objectEncoding プロパティに関する説明を参照してください。

このプロパティの値は、ローカルストリームかリモートストリームかによって異なります。ローカルストリームでは、NetConnection.connect() メソッドに null が渡され、NetConnection.defaultObjectEncoding の値が返されます。リモートストリームでは、サーバーに接続されており、このサーバーとの接続のオブジェクトエンコーディングが返されます。

接続されていない場合にこのプロパティを読み取ろうとするか、このプロパティを変更しようとすると、Flash Player により例外がスローされます。

実装
    public function get objectEncoding():uint

関連項目

soundTransformプロパティ 
soundTransform:SoundTransform  [read-write]

この NetStream オブジェクトのサウンドを制御します。詳細については、SoundTransform クラスを参照してください。

実装
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

関連項目

timeプロパティ 
time:Number  [read-only]

再生ヘッドの位置 (秒単位) です。

実装
    public function get time():Number

関連項目

コンストラクタの詳細
NetStream()コンストラクタ
public 関数 NetStream(connection:NetConnection)

指定された NetConnection オブジェクトを使用して、FLV ファイルを再生するためのストリームを生成します。

パラメータ
connection:NetConnection — NetConnection オブジェクトです。

スロー
ArgumentError — NetConnection インスタンスは接続されていません。

関連項目

メソッドの詳細
attachAudio()メソッド
public function attachAudio(microphone:Microphone):void

ソースとして渡される Microphone オブジェクトから NetStream オブジェクトを介して送信されるオーディオストリームを指定します。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

このメソッドは、publish() メソッドを呼び出す前または後に呼び出すことができ、実際に送信を開始します。オーディオを聞きたいサブスクライバは NetStream.play() メソッドを呼び出す必要があります。指定の Microphone オブジェクトの soundTransform プロパティを使用して、このオーディオストリームのサウンドプロパティを制御できます。

パラメータ
microphone:Microphone — 送信するオーディオストリームのソースです。

関連項目

attachCamera()メソッド 
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void

指定のソースからビデオのキャプチャを開始します。または、theCameranull に設定されると、キャプチャを停止します。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

ビデオソースのアタッチ後に、NetStream.publish() を呼び出して転送を開始する必要があります。ビデオを表示したいサブスクライバは、NetStream.play()Video.attachCamera() の各メソッドを呼び出して、ステージ上にビデオを表示する必要があります。

snapshotMilliseconds を使用して値 0 を指定すると、単一のスナップショットを送信できます。また、正の数を指定して、ビデオフィードに指定のミリ秒数のトレーラを追加すると、一連のスナップショット、つまり事実上のコマ落としビデオを送信することができます。トレーラは、ビデオメッセージの表示時間を拡張します。snapshotMilliseconds に正の値を指定し、attachCamera() を繰り返し呼び出すと、スナップショットとトレーラの交互のシーケンスにより、コマ落としビデオが作成されます。たとえば、毎日 1 フレームずつキャプチャして、ビデオファイルに追加することができます。サブスクライバがファイルを再生すると、各フレームが指定のミリ秒間画面上に表示され、その後、次のフレームが表示されます。

この snapshotMilliseconds パラメータの目的は、Camera.setMode() で設定できる fps パラメータとは異なります。snapshotMilliseconds を指定すると、記録した各フレーム間で経過時間を制御できます。Camera.setMode() を使用して fps を指定すると、記録時と再生時に経過時間を制御できます。

たとえば、5 分ごとにスナップショットを 1 枚撮り、合計で 100 枚のスナップショットを撮るとします。この操作を行うには、次の 2 つの方法があります。

どちらの手法でも、同じ 500 個のフレームがキャプチャされます。どちらのアプローチも有用ですが、使用するアプローチは、主に再生要件によって異なります。たとえば、後者の場合、始めから最後までオーディオを録音し続けることができます。また、どちらの場合もファイルサイズはほとんど同じです。

パラメータ
theCamera:Camera — ビデオ転送のソースです。有効な値は、ビデオのキャプチャを開始する Camera オブジェクトと null です。null を渡すと、Flash Player はビデオのキャプチャを停止し、ユーザーが送信した追加パラメータはどれも無視されます。
 
snapshotMilliseconds:int (default = -1) — ビデオストリームが連続的か、単一のフレームか、コマ撮り写真の作成に使用する一連の単一フレームかを指定します。
  • このパラメータを省略すると、Flash Player は null の値を attachCamera に渡すまで、すべてのビデオをキャプチャします。
  • 0 を渡すと、Flash Player は単一のビデオフレームのみをキャプチャします。既存のストリーム内に "スナップショット" を転送するには、この値を使用します。Flash Player では、無効なパラメータ、負のパラメータ、または非数値パラメータが 0 として解釈されます。
  • 正の値を渡すと、Flash Player は単一のビデオフレームをキャプチャした後、スナップショットのトレーラとして、指定の長さの一時停止を追加します。コマ撮り写真の効果を作成するには、この値を使用します。
close()メソッド 
public function close():void

ストリーム上のすべてのデータの再生を停止し、time プロパティを 0 に設定して、他のユーザーがストリームにアクセスできるようにします。また、このコマンドは、HTTP を使用してダウンロードされた FLV ファイルのローカルコピーを削除します。Flash Player では、Flash Player で作成した FLV ファイルのローカルコピーを削除しますが、ビデオのコピーがブラウザのキャッシュディレクトリに残る場合があります。FLV ファイルをキャッシュやローカル記憶域に一切残さないようにする必要がある場合には、Flash Media Server 2 を使用してください。

関連項目

pause()メソッド 
public function pause():void

ビデオストリームの再生を一時停止します。ビデオが既に一時停止している場合は、このメソッドを呼び出しても何も実行されません。

関連項目

play()メソッド 
public function play(... arguments):void

外部オーディオファイルまたはビデオファイル (FLV) の再生を開始します。ビデオデータを表示するには、VIdeo オブジェクトを作成して、Video.attachNetStream() メソッドを呼び出す必要があります。ビデオと一緒にストリームされるオーディオ、またはオーディオだけが含まれた FLV ファイルは自動的に再生されます。マイクロホンからオーディオをストリームするには、NetStream.attachAudio() メソッドを使用し、Microphone オブジェクトを使用して、オーディオのいくつかの特性を制御します。

FLV ファイルに関連付けられたオーディオを制御するには、DisplayObjectContainer.addChild() メソッドを使用して、表示リスト上のオブジェクトにオーディオをアタッチします。その後、Sound オブジェクトを作成することにより、オーディオのいくつかの特性を制御できます。詳細については、DisplayObjectContainer.addChild() メソッドを参照してください。

FLV ファイルが見つからなかった場合は、netStatus イベントが送出されます。再生中のストリームを停止するには、close() メソッドを使用します。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。

詳細については、次のトピックを参照してください。

パラメータ
... arguments — URLRequest オブジェクトまたはストリングとしての、再生する FLV ファイルの場所です。SWF ファイルと同じディレクトリまたはサブディレクトリに格納されたローカルの FLV ファイルを再生できますが、上位のディレクトリを参照することはできません。

スロー
SecurityError — 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この制限は、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類すると回避できる場合があります。
 
ArgumentError — 少なくとも 1 つのパラメータを指定する必要があります。

関連項目

publish()メソッド 
public function publish(name:String = null, type:String = null):void

クライアントから Flash Media Server 2 などのサーバーへ、ストリーミングオーディオ、ビデオ、およびテキストメッセージを送信します。送信中にストリームを録音することもできます。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドは、主に Flash Media Server 2 などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

既にパブリッシュされているか、記録されているストリームをクライアントに再生させる場合は、このメソッドを使用しないでください。代わりに、そのクライアントの NetStream インスタンスを作成し、play() を呼び出します。

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

Flash Media Server 2 でストリームを記録する場合、FLV ファイルが作成され、サーバー上のアプリケーションディレクトリのサブディレクトリに格納されます。各ストリームは、NetConnection.connect() メソッドの command パラメータに渡されたアプリケーションインスタンス名の値と一致する名前のディレクトリに格納されます。これらのディレクトリは自動的に作成されるため、インスタンス名ごとに作成する必要はありません。たとえば、次のコードでは、アプリケーションディレクトリ内の lectureSeries というディレクトリに格納されているアプリケーションの特定のインスタンスとの接続方法を示しています。lecture.flv という名前のファイルが /yourAppsFolder/lectureSeries/streams/Monday というサブディレクトリに格納されています。

  var myNC:NetConnection = new NetConnection();
  myNC.connect("rtmp://server.domain.com/lectureSeries/Monday");
  var myNS:NetStream = new NetStream(myNC);
  myNS.publish("lecture", "record");
  

次の例では、同じアプリケーションの別のインスタンスに接続し、同一の publish コマンドを発行する方法を示します。lecture.flv という名前のファイルが /yourAppsFolder/lectureSeries/streams/Tuesday というサブディレクトリに格納されています。

  var myNC:NetConnection = new NetConnection();
  myNC.connect("rtmp://server.domain.com/lectureSeries/Tuesday");
  var myNS:NetStream = new NetStream(my_nc);
  myNS.publish("lecture", "record");
  

インスタンス名の値を渡さない場合、name プロパティに渡された値に一致するファイルが /yourAppsFolder/appName/streams/_definst_ ("デフォルトのインスタンス" の場合) というサブディレクトリに格納されます。インスタンス名の使用については、NetConnection.connect() メソッドを参照してください。FLV ファイルの再生については、 NetStream.play() メソッドを参照してください。

このメソッドは、各種情報オブジェクトで netStatus イベントを送出することができます。たとえば、誰かが既に指定した名前でストリームをパブリッシュしている場合、netStatus イベントは NetStream.Publish.BadName のコードプロパティで送出されます。詳細については、netStatus イベントを参照してください。

パラメータ
name:String (default = null) — ストリームを識別するストリングです。false を渡すと、パブリッシュ操作が停止します。このストリームにサブスクライブしているクライアントは、NetStream.play() を呼び出す場合に、この同じ名前を渡す必要があります。ストリーム名にファイル拡張子を含める必要はありません。
 
type:String (default = null) — ストリームのパブリッシュ方法を指定するストリングです。有効な値は "record"、"append"、および "live" です。デフォルト値は "live" です。
  • "record" を渡すと、Flash Player はライブデータをパブリッシュし、記録して、記録したデータを、name パラメータに渡された値に一致する名前の新しい FLV ファイルに保存します。ファイルは、サーバー上の、サーバーアプリケーションを格納したディレクトリ内のサブディレクトリに格納されます。このファイルが既に存在する場合は、上書きされます。
  • "append" を渡すと、Flash Player はライブデータをパブリッシュして記録し、記録したデータを、name パラメータに渡された値と一致する名前の FLV ファイルに付加します。このファイルは、サーバー上のサーバーアプリケーションを格納したディレクトリ内のサブディレクトリに格納されます。name パラメータと一致する名前のファイルが見つからない場合は、ファイルが作成されます。
  • このパラメータを省略するか、"live" を渡した場合、Flash Player はライブデータを記録せずにパブリッシュします。name パラメータに渡された値と一致する名前のファイルが存在する場合は、そのファイルが削除されます。

関連項目

receiveAudio()メソッド 
public function receiveAudio(flag:Boolean):void

ストリーム上で着信オーディオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブされたクライアントでのみ使用できます。ストリームの発行者は使用できません。

このメソッドは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

このメソッドは、NetStream.play() メソッドを呼び出す前または呼び出した後に呼び出すことができ、実際にストリームの受信を開始します。たとえば、着信オーディオストリームをミュートおよびミュート解除する場合、ユーザーがクリックするボタンにこれらのメソッドをアタッチできます。

指定のストリームにオーディオデータのみが含まれる場合、このメソッドに false の値を渡すと NetStream.time はこれ以上増加しなくなります。

パラメータ
flag:Boolean — 指定のストリーム上で着信オーディオが再生されるかどうかを示します。再生する場合は true、再生しない場合は false を指定します。デフォルト値は true です。
receiveVideo()メソッド 
public function receiveVideo(flag:Boolean):void

ストリーム上で着信ビデオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブされたクライアントでのみ使用できます。ストリームの発行者は使用できません。

このメソッドは、主に Flash Media Server 2 などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

このメソッドは、NetStream.play() メソッドを呼び出す前または呼び出した後に呼び出すことができ、実際にストリームの受信を開始します。たとえば、着信ビデオストリームを表示または非表示にする場合、ユーザーが押すボタンにこれらのメソッドをアタッチできます。

指定のストリームにビデオデータのみが含まれる場合、このメソッドに false の値を渡すと NetStream.time はこれ以上増加しなくなります。

パラメータ
flag:Boolean — 指定のストリーム上で着信ビデオが再生されるかどうかを示します。再生する場合は true、再生しない場合は false を指定します。デフォルト値は true です。
resume()メソッド 
public function resume():void

再生を一時停止していたビデオストリームを再開します。ビデオが既に再生中である場合は、このメソッドを呼び出しても何も実行されません。

関連項目

seek()メソッド 
public function seek(offset:Number):void

指定の位置、すなわちストリームの先頭からのオフセット (秒単位) に最も近いキーフレームをシークします。この位置に到達したら、ストリームが再生を再開します。

パラメータ
offset:Number — FLV ファイルにおける、再生ヘッドのおおよその移動時間 (秒単位) です。offset に最も近いビデオキーフレームに再生ヘッドを移動します。
  • ストリームの先頭に移動するには、offset に 0 を指定します。
  • ストリームの先頭から前方にシークするには、進めたい秒数をパラメータに指定します。たとえば、myStream.seek(15) と指定すると、再生ヘッドが先頭から 15 秒の位置に移動します。
  • 現在位置を基準にしてシークするには、NetStream.time + n または NetStream.time - n を指定すると、現在位置を基準にしてそれぞれ n 秒分、前方または後方にシークされます。たとえば、現在位置から 20 秒巻き戻すには、NetStream.seek(NetStream.time - 20). のように指定します。

ビデオがシークする正確な位置は、書き出し時の 1 秒あたりのフレーム数 (fps) の設定によって異なります。したがって、同じビデオを 6 fps および 30 fps で書き出し、両方のビデオオブジェクトに myStream.seek(15) を使用すると、ビデオは 2 つの異なる位置をシークします。

関連項目

send()メソッド 
public function send(handlerName:String, ... arguments):void

指定されたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドは、主に Flash Media Server 2 などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

メッセージを処理し、応答するには、myStream.HandlerName の形式でハンドラを作成します。

Flash Player はメソッドやそれらのデータ、オブジェクトプロトタイプ変数、または列挙不可能な変数を直列化しません。表示オブジェクトの場合、Flash Player はパスを直列化しますが、データは直列化しません。

パラメータ
handlerName:String — 送信されるメッセージです。メッセージを受け取る ActionScript ハンドラの名前でもあります。ハンドラ名の深さは 1 レベルのみで (つまり、親子形式を取ることができません)、ストリームオブジェクトに相対します。ハンドラ名には予約語を使用しないでください。たとえば、ハンドラ名として "close" を使用すると、このメソッドは失敗します。
 
... arguments — オプションのパラメータで、任意のデータ型を指定できます。それらは直列化され、接続を介して送信されます。受信側のハンドラは同じ順番でそれらを受け取ります。パラメータが循環オブジェクト (循環するリンクされたリストなど) である場合、シリアライザは参照を正しく処理します。

関連項目



次の例では、2 つの NetStream オブジェクトを同じファイルに設定します。一方の NetStream オブジェクト ns1 を使用して、send() メソッドを呼び出します。また、もう一方の NetStream オブジェクト ns2 を使用して、client オブジェクトを登録し、send() 呼び出しに対するハンドラ関数を登録します。
  import flash.net.NetConnection;
  import flash.net.NetStream;
  import flash.events.NetStatusEvent;
  import flash.media.Video;
  import flash.utils.setTimeout;
  
  var nc:NetConnection = new NetConnection();
  nc.objectEncoding = 0;
  nc.addEventListener("netStatus", onNCStatus);
  nc.connect("rtmp://www.example.com/MyApp/MyInstance");
  var ns1:NetStream;
  var vid:Video = new Video(300,300);
  addChild(vid);
  var obj:Object = new Object();
  obj.myFunction = function(event:String):void {
   trace(event);
  }
  
  function onNCStatus(event:NetStatusEvent):void {
   if(event.info.code == "NetConnection.Connect.Success") {
    ns1 = new NetStream(nc);
    ns1.play("MyVideo");
    vid.attachNetStream(ns1);
    ns1.client = obj;
    ns1.publish("dummy", "live");
    
    var ns2:NetStream = new NetStream(nc);
    ns2.play("dummy");
    ns2.client = obj;
    
    setTimeout(sendHello, 3000);
   }
  }
  
  function sendHello():void {
    ns1.send("myFunction", "hello");
  }
  

togglePause()メソッド 
public function togglePause():void

ストリームの再生を一時停止または再開します。このメソッドを呼び出すと最初は再生を一時停止し、次に呼び出したときには再生を再開します。このメソッドを使用して、ユーザーが 1 つのボタンを押すだけで再生を一時停止または再生できるようにすることができます。

関連項目

イベントの詳細
asyncErrorevent 
イベントオブジェクトの型: flash.events.AsyncErrorEvent
AsyncErrorEvent.type property = flash.events.AsyncErrorEvent.ASYNC_ERROR

非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。このイベントは、サーバーが定義されていないメソッドをクライアント上で呼び出したときに送出されます。

AsyncErrorEvent.ASYNC_ERROR 定数は、asyncError イベントオブジェクトの type プロパティ値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetネットワーク操作エラーが発生したオブジェクトです。
errorイベントをトリガしたエラーです。

関連項目

ioErrorevent  
イベントオブジェクトの型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

入出力エラーが発生してネットワーク処理が失敗したときに送出されます。

ioError イベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target入出力エラーが発生したネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。
netStatusevent  
イベントオブジェクトの型: flash.events.NetStatusEvent
NetStatusEvent.type property = flash.events.NetStatusEvent.NET_STATUS

NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。netStatus イベントには、info プロパティが含まれます。このプロパティは、接続試行が成功したかどうかなど、イベントに関する特定の情報を含む情報オブジェクトです。

netStatus イベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
infoオブジェクトのステータスまたはエラー状態を記述するプロパティを持つオブジェクトです。
targetそのステータスをレポートする NetConnection または NetStream オブジェクトです。

関連項目

onCuePointevent  

FLV ファイルの再生中に、埋め込みキューポイントに達すると呼び出されます。このハンドラを使用して、ビデオが特定のキューポイントに達したときにコード内のアクションをトリガすることができます。これにより、アプリケーションの他のアクションとビデオ再生イベントと同期させることができます。

このイベントは、主に Flash Media Server 2 などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。このイベントは Flash Player API の一部ではありませんが、便宜上、リファレンスガイドで取り上げています。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、このイベントを受け取ったり、処理したりすることはできません。代わりに、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかを直接アタッチする必要があります。

FLV ファイルに埋め込み可能なキューポイントには、次のタイプがあります。

onCuePoint イベントオブジェクトには、次のプロパティが含まれます。

プロパティ 説明
name キューポイントが FLV ファイル内に埋め込まれたときに、キューポイントに指定された名前です。
parameters このキューポイントに指定された名前と値のペアのストリングの結合配列です。パラメータ名または値には、任意の有効なストリングを使用できます。
time ビデオファイルの再生時にキューポイントが発生した時間 (秒数) です。
type 到達したキューポイントの種類です。ナビゲーションまたはイベントのいずれかです。

最初に FLV ファイルをエンコードするとき、または Flash オーサリングツールでビデオの読み込みウィザードを使用してビデオクリップを読み込むときに、FLV ファイルにキューポイントを定義できます。

onMetaData イベントも、ビデオファイル内のキューポイントに関する情報を取得します。ただし、onMetaData イベントは、ビデオの再生が開始される前に、すべてのキューポイントに関する情報を取得します。onCuePoint イベントは、再生時にそのキューポイントに指定された時間に、1 つのキューポイントに関する情報を取得します。

一般に、コードで特定のキューポイントの発生時に応答するには、onCuePoint イベントを使用して、コード内の特定のアクションをトリガします。

onMetaData イベントに指定されたキューポイントのリストを使用すると、ビデオストリームの事前に定義されたポイントでユーザーにビデオの再生を開始させることができます。キューポイントの time プロパティの値を NetStream.seek() メソッドに渡して、そのキューポイントからビデオを再生します。

関連項目

onMetaDataevent  

再生中の FLV ファイルに埋め込まれている説明情報を Flash Player が受け取ったときに送出されます。

この特別なイベントは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。この特別なイベントは厳密には Flash Player API の一部ではありませんが、便宜上、リファレンスガイドで取り上げています。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、このイベントを受け取ったり、処理したりすることはできません。代わりに、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかを直接アタッチする必要があります。

Flash Video Exporter ユーティリティ (バージョン 1.1 以降) は、ビデオの継続時間、作成日付、データレート、その他の情報をビデオファイルに埋め込みます。各ビデオエンコーダは、それぞれ異なるメタデータのセットを埋め込みます。

このイベントは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガされます。

多くの場合、FLV メタデータに埋め込まれた継続期間の値は実際の継続時間に近似したものになりますが、正確な値ではありません。つまり、再生ヘッドがビデオストリームの末尾にある場合、FLV メタデータに埋め込まれた継続期間の値は NetStream.time プロパティの値と必ずしも一致するわけではありません。

関連項目

onPlayStatusevent  

NetStream オブジェクトによるストリームの再生が終了したときに送出されます。このハンドラにより、情報オブジェクトが返され、netStatus イベントにより返される情報以外の情報も提供されます。このハンドラを使用すると、(情報オブジェクト NetStream.Play.Switch で示されているように) 再生リストで NetStream オブジェクトがストリームを切り替えたとき、または (情報オブジェクト NetStream.Play.Complete で示されているように) NetStream オブジェクトが終わりまで再生したときに、コード内のアクションをトリガできます。このイベントに応答するには、サーバーから送られる情報オブジェクトを処理する関数を作成する必要があります。

このイベントは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。このイベントは Flash Player API の一部ではありませんが、便宜上、リファレンスガイドで取り上げています。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、このイベントを受け取ったり、処理したりすることはできません。代わりに、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかを直接アタッチする必要があります。

このイベントでは、次のプロパティが指定された情報オブジェクトを返すことができます。

code プロパティ level プロパティ 説明
NetStream.Play.Switch "status" サブスクライバが、再生リストでストリームを切り替えています。
NetStream.Play.Complete "status" 再生が終了しました。

関連項目


次の例では、Video オブジェクトを、FLV ファイルをロードして再生する NetConnection クラスと NetStream クラスと一緒に使用して、FLV ファイルをロードおよび再生します。この例を実行するには、 videoURL に渡される変数と、ファイル名および場所が一致する FLV ファイルが必要です。 この場合は、SWF ファイルと同じディレクトリにある Video.flv という名前の FLV ファイルです。

この例では、Video オブジェクトと NetStream オブジェクトを作成し、 Video.attachNetStream() メソッドと NetStream.play() メソッドを呼び出すコードが ハンドラ関数に配置されます。ハンドラは、 NetConnection オブジェクトとの接続が成功した場合にのみ呼び出されます。つまり、 netStatus イベントが、成功したことを示す code プロパティとともに info オブジェクトを返す 場合です。 接続に成功するまで待ってから、次のコードを呼び出すことをお勧めします。 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);
    }
}




 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/2_jp/langref/flash/net/NetStream.html