パッケージ | flash.net |
クラス | public class NetStream |
継承 | NetStream EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream クラスを使用して、次の操作を行います。
-
NetStream.play()
を呼び出して、ローカルディスク、Web サーバーまたは Flash Media Server からメディアファイルを再生します。 -
NetStream.publish()
を呼び出して、ビデオ、オーディオおよびデータストリームを Flash Media Server にパブリッシュします。 -
NetStream.send()
を呼び出して、サブスクライブされたすべてのクライアントにデータメッセージを送信します。 -
NetStream.send()
を呼び出して、メタデータをライブストリームに追加します。 -
NetStream.appendBytes()
を呼び出して、ByteArray データを NetStream に渡します。
注意:同じ NetStream オブジェクトでは、ストリームを再生およびパブリッシュできません。
Adobe AIR および Flash Player 9.0.115.0 以降のバージョンでは、標準の MPEG-4 コンテナ形式から派生したファイルがサポートされます。H.264 ビデオまたは HE-AAC v2 エンコードオーディオ、あるいはその両方が含まれている場合、このようなファイルには F4V、MP4、M4A、MOV、MP4V、3GP および 3G2 があります。H.264 では、Sorenson または On2 の同じエンコードプロファイルと比較して、低いビットレートで高品質のビデオが配信されます。AAC は、MPEG-4 ビデオ標準で定義された標準オーディオ形式です。AAC の拡張である HE-AAC v2 は、スペクトルバンドレプリケーション(SBR)およびパラメトリックステレオ(PS)技法を使用して、低いビットレートでのコーディング効率を向上させます。
サポートされているコーデックおよびファイル形式について詳しくは、以下を参照してください。
- ADOBE FLASH MEDIA SERVER 3.5 技術概要
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- FLV/F4V オープン仕様のドキュメント
Flash Media Server ストリーム、プログレッシブ F4V ファイル、またはプログレッシブ FLV ファイルからデータを受け取る
Flash Media Server、F4V ファイル、および FLV ファイルは、ストリーミング中または再生中に特定のデータポイントで、データが含まれているイベントオブジェクトを送信できます。再生中は、2 つの方法でストリームまたは FLV ファイルからのデータを処理できます。
-
client プロパティをイベントハンドラーと関連付けてデータオブジェクトを受信します。
NetStream.client
プロパティを使用して、特定のデータ処理関数の呼び出しにオブジェクトを割り当てます。NetStream.client
プロパティに割り当てられたオブジェクトは、onCuePoint()
、onImageData()
、onMetaData()
、onPlayStatus()
、onSeekPoint()
、onTextData()
およびonXMPData()
の各データポイントを監視できます。これらの関数内にプロシージャを書き込んで、再生中にストリームから返されたデータオブジェクトを処理します。詳しくは、NetStream.client
プロパティを参照してください。 - client プロパティを NetStream クラスのサブクラスに関連付けて、データオブジェクトを受信するイベントハンドラーを書き込みます。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、そのサブクラスをダイナミックにしてイベントハンドラーをサブクラスのインスタンスに追加することもできます。
NetGroup.Neighbor.Connect
イベントの受信を待ってから、オブジェクトレプリケーション、ダイレクトルーティングまたはポスティング API を使用します。
注意:MP3 などのオーディオファイルでデータを送信するには、Sound クラスを使用してオーディオファイルと Sound オブジェクトを関連付けます。次に、Sound.id3
プロパティを使用してサウンドファイルからメタデータを読み込みます。
AIR for iOS で H.264 エンコードされたビデオのサポート
H.264 ビデオでは、AIR 3.0 for iOS(およびそれ以降)は、完全な NetStream API のサブセットをサポートしています。次の表は、AIR for iOS でサポートされていない、再生用 NetStream メンバーの一覧です。
サポートされていないプロパティ | サポートされていないメソッド | サポートされていないイベント |
---|---|---|
bufferTime | appendBytes() | onCuePoint(FLV ファイルでのみ有効) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | DRM.encryptedFLV ステータスイベントコード | |
maxPauseBufferTime | ||
soundTransform | ||
RTMFP 接続を記述するすべてのプロパティ |
AIR for iOS の使用に関する追加情報については、NetStream.play()
メソッドを参照してください。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
audioReliable : Boolean
RTMFP 接続の場合、音声が完全な信頼性を備えて送信されるかどうかを指定します。 | NetStream | ||
audioSampleAccess : Boolean
RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーに音声ストリームのキャプチャを許可するかどうかを指定します。 | NetStream | ||
backBufferLength : Number [読み取り専用]
巻戻しおよび再生のために現在キャッシュされている、以前に表示されたデータの秒数。 | NetStream | ||
backBufferTime : Number
巻き戻しと再生のために Flash Player がキャッシュする、以前に表示されたデータの量を秒単位で指定します。 | NetStream | ||
bufferLength : Number [読み取り専用]
バッファーに現在格納されているデータの秒数です。 | NetStream | ||
bufferTime : Number
ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。 | NetStream | ||
bufferTimeMax : Number
ライブストリーミングコンテンツ用に、最大バッファー長を秒単位で指定します。 | NetStream | ||
bytesLoaded : uint [読み取り専用]
既にアプリケーションにロードされているデータのバイト数です。 | NetStream | ||
bytesTotal : uint [読み取り専用]
アプリケーションにロードされるファイルの総バイト数。 | NetStream | ||
checkPolicyFile : Boolean
ビデオファイルのロードを開始する前に、アプリケーションが、ロードするビデオファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。 | NetStream | ||
client : Object
F4V または FLV ファイルデータのストリーミングの処理で、コールバックメソッドの呼び出し元となるオブジェクトを指定します。 | NetStream | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
currentFPS : Number [読み取り専用]
1 秒あたりの表示フレーム数です。 | NetStream | ||
dataReliable : Boolean
RTMFP 接続の場合、NetStream.send() 呼び出しが完全な信頼性を備えて送信されるかどうかを指定します。 | NetStream | ||
farID : String [読み取り専用]
RTMFP 接続の場合、この NetStream インスタンスに接続されている相手側の識別子です。 | NetStream | ||
farNonce : String [読み取り専用]
RTMFP および RTMPE 接続の場合、値は基本的にこのストリームの向こう側で選択され、この接続に固有です。 | NetStream | ||
inBufferSeek : Boolean
表示されたデータがスマートシーク用にキャッシュされているか(TRUE)、キャッシュされていないか(FALSE)を指定します。 | NetStream | ||
info : NetStreamInfo [読み取り専用]
サービスの質に関する統計情報をプロパティが持つ NetStreamInfo オブジェクトを返します。 | NetStream | ||
liveDelay : Number [読み取り専用]
ライブ(バッファリングされていない)モードでサブスクライブしているストリームバッファー内にあるデータの秒数です。 | NetStream | ||
maxPauseBufferTime : Number
一時停止モード中にメッセージをバッファリングしておく時間を秒単位で指定します。 | NetStream | ||
multicastAvailabilitySendToAll : Boolean
RTMFP 接続の場合、ピアーツーピアーマルチキャストフラグメント可用性メッセージがすべてのピアーに送信されるか、1 つのピアーにのみ送信されるかを指定します。 | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
RTMFP 接続の場合、メッセージがピアーに送信される間隔を秒単位で指定し、ローカルノードで新しいピアーツーピアーマルチキャストメディアフラグメントを使用できることをピアーに通知します。 | NetStream | ||
multicastFetchPeriod : Number
RTMFP 接続の場合、ピアーツーピアーマルチキャストメディアフラグメントが利用可能になったことをローカルノードが認識してから、これらのフラグメントをピアーから取得するまでの時間を秒単位で指定します。 | NetStream | ||
multicastInfo : NetStreamMulticastInfo [読み取り専用]
RTMFP 接続の場合、プロパティにサービス品質に関する統計が含まれる NetStreamMulticastInfo オブジェクトを返します。 | NetStream | ||
multicastPushNeighborLimit : Number
RTMFP 接続の場合、マルチキャストメディアを事前に移動するピアーの最大数を指定します。 | NetStream | ||
multicastRelayMarginDuration : Number
RTMFP 接続の場合、指定された継続時間が過ぎてもピアーツーピアーマルチキャストデータを要求するピアーに対してデータを送信できるよう、データを利用できる継続時間を秒単位で指定します。 | NetStream | ||
multicastWindowDuration : Number
RTMFP 接続の場合、ピアーツーピアーマルチキャスト再構築ウィンドウの継続時間を秒単位で指定します。 | NetStream | ||
nearNonce : String [読み取り専用]
RTMFP および RTMPE 接続の場合、値は基本的にこのストリームのこちら側で選択され、この接続に固有です。 | NetStream | ||
objectEncoding : uint [読み取り専用]
この NetStream オブジェクトのエンコード(AMF バージョン)です。 | NetStream | ||
peerStreams : Array [読み取り専用]
パブリッシュするこの NetStream インスタンスを監視している、サブスクライブするすべての NetStream インスタンスを保持するオブジェクト。 | NetStream | ||
soundTransform : flash.media:SoundTransform
この NetStream オブジェクトのサウンドを制御します。 | NetStream | ||
time : Number [読み取り専用]
再生ヘッドの位置(秒単位)です。 | NetStream | ||
useHardwareDecoder : Boolean
ストリームでハードウェアアクセラレーターによるデコードを使用するかどうかを指定します。 | NetStream | ||
useJitterBuffer : Boolean
ライブの非バッファーストリーミング(bufferTime = 0)の待ち時間を最小化します。 | NetStream | ||
videoReliable : Boolean
RTMFP 接続の場合、ビデオが完全な信頼性を備えて送信されるかどうかを指定します。 | NetStream | ||
videoSampleAccess : Boolean
RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーにビデオストリームのキャプチャを許可するかどうかを指定します。 | NetStream | ||
videoStreamSettings : VideoStreamSettings
ストリーム圧縮のプロパティを指定します。 | NetStream |
メソッド | 定義元 | ||
---|---|---|---|
メディアファイルを再生するときに使用できるストリームを作成し、NetConnection オブジェクトにデータを送信します。 | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
ByteArray をプレイアウトのために NetStream に渡します。 | NetStream | ||
タイムスケールの不連続性を示し、FIFO をフラッシュして、ファイルヘッダーまたは FLV タグの先頭を予期するようバイトパーサーに指示します。 | NetStream | ||
新規 NetConnection オブジェクトにストリームを接続します。 | NetStream | ||
ソースとして渡された Microphone オブジェクトからのオーディオストリームを、NetStream オブジェクトに接続します。 | NetStream | ||
カメラからビデオのキャプチャを開始します。または、theCamera が null に設定されると、キャプチャを停止します。 | NetStream | ||
ストリーム上のすべてのデータの再生を停止し、time プロパティを 0 に設定して、他の用途でストリームにアクセスできるようにします。 | NetStream | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
NetStream オブジェクトによって保持されているリソースをすべて解放します。 | NetStream | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
ピアーがパブリッシュするストリームが、ピアーがサブスクライブするストリームに一致する場合に呼び出されます。 | NetStream | ||
ビデオストリームの再生を一時停止します。 | NetStream | ||
ローカルディレクトリまたは Web サーバーからメディアファイルを再生します。Flash Media Server からメディアファイルまたはライブストリームを再生します。 | NetStream | ||
マルチビットレートのファイル間をシームレスに切り替え、接続が中断し再接続されたときに、NetStream が再開できるようにします。 | NetStream | ||
ローカルに保存されたメディアファイルから DRM メタデータを抽出します。 | NetStream | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
クライアントから Flash Media Server へ、ストリーミングオーディオ、ビデオ、およびデータメッセージを送信します。送信中にストリームを記録することもできます。 | NetStream | ||
ストリーム上で着信オーディオが再生されるかどうかを示します。 | NetStream | ||
ストリーム上で着信ビデオが再生されるかどうかを示します。 | NetStream | ||
着信ビデオのフレームレートを指定します。 | NetStream | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
[静的]
AIR アプリケーションでは、すべてのローカルでキャッシュされた DRM(デジタル著作権管理)のバウチャーデータを削除します。 | NetStream | ||
再生を一時停止していたビデオストリームを再開します。 | NetStream | ||
指定された位置に最も近いキーフレーム(ビデオ業界では I フレームとも呼ばれます)をシークします。 | NetStream | ||
パブリッシュされたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。 | NetStream | ||
基になる暗号化コンテンツを表示するために必要な DRM 認証資格情報を設定します。 | NetStream | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
現在表示されているフレームに対して、指定された数のフレーム分、前後に進みます。 | NetStream | ||
ストリームの再生を一時停止または再開します。 | NetStream | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。 | NetStream | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
NetStream オブジェクトが、再生の前にユーザーの認証資格情報を要求する、DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。 | NetStream | |||
NetStream オブジェクトが DRM(デジタル著作権管理)で暗号化されたファイルを再生しようとして、DRM に関連したエラーを検出したときに送出されます。 | NetStream | |||
DRM(デジタル著作権管理)で暗号化されたコンテンツの再生が開始されるときに送出されます(ユーザーが認証されてコンテンツの再生が許可された場合)。 | NetStream | |||
入出力エラーが発生してネットワーク処理が失敗したときに送出されます。 | NetStream | |||
ビデオコンテンツの再生時と、一部の種類のメッセージが処理されたときに送出されます。 | NetStream | |||
NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。 | NetStream | |||
ビデオファイルの再生中に埋め込まれたキューポイントに達した場合に応答するリスナーを定義します。 | NetStream | |||
AIR がメディアファイル内に埋め込まれた DRM コンテンツメタデータを抽出したときに応答するリスナーを定義します。 | NetStream | |||
再生中のメディアファイルにバイト配列として埋め込まれているイメージデータを Flash Player が受け取ったときに応答するリスナーを定義します。 | NetStream | |||
再生中のビデオに埋め込まれた記述的情報を Flash Player が受け取ったときに応答するリスナーを定義します。 | NetStream | |||
NetStream オブジェクトによるストリームの再生が終了した場合に応答するリスナーを定義します。 | NetStream | |||
シーク可能ポイントと見なされるポイント(例えば、ビデオキーフレーム)が付加バイトパーサーによって検出されたときに、appendBytes() から同期的に呼び出されます。 | NetStream | |||
Flash Player が再生中のメディアファイルに埋め込まれたテキストデータを受信したときに応答するリスナーを定義します。 | NetStream | |||
再生中のビデオに埋め込まれている Adobe Extensible Metadata Platform(XMP)独自の情報を Flash Player が受け取ったときに応答するリスナーを定義します。 | NetStream | |||
アプリケーションが NetStream.play() メソッドを呼び出して DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。 | NetStream |
定数 | 定義元 | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [静的]
NetStream インスタンスのコンストラクターに対するパラメーターとして使用される静的オブジェクト。 | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [静的]
ピアーツーピアーの発行者接続を作成します。 | NetStream |
audioReliable | プロパティ |
audioReliable:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、音声が完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信されるすべての音声は完全に信頼できます。FALSE の場合、送信される音声は完全には信頼できませんが、一定の時間再送信された後、消失します。FALSE 値を使用すれば、音声品質を犠牲にして、レーテンシーを低減できます。
部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
関連する API エレメント
audioSampleAccess | プロパティ |
audioSampleAccess:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーに音声ストリームのキャプチャを許可するかどうかを指定します。FALSE の場合、音声ストリームをキャプチャしようとするサブスクライバーには権限エラーが表示されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
関連する API エレメント
backBufferLength | プロパティ |
backBufferLength:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
巻戻しおよび再生のために現在キャッシュされている、以前に表示されたデータの秒数。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
このプロパティは、データが Flash Media Server 3.5.3 以降のストリーミングの場合にのみ使用可能です。Flash Media Server について詳しくは、このクラスの説明を参照してください。
以前に表示されたデータをどれだけキャッシュするかを指定するには、Netstream.backBufferTime
プロパティを使用します。
データがキャッシュされるのを防ぐために、Netstream.inBufferSeek
プロパティを FALSE に設定します。
実装
public function get backBufferLength():Number
関連する API エレメント
backBufferTime | プロパティ |
backBufferTime:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
巻き戻しと再生のために Flash Player がキャッシュする、以前に表示されたデータの量を秒単位で指定します。デフォルト値は、デスクトップアプリケーションの場合は 30 秒、モバイルアプリケーションの場合は 3 秒です。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
このプロパティは、Flash Media Server 3.5.3 以降でデータをストリーミングする場合にのみ使用できます。Flash Media Server について詳しくは、このクラスの説明を参照してください。
このプロパティを使用すると、既に表示されたデータをもう一度サーバーから取得することがないので、巻戻し操作のパフォーマンスが向上します。 その代わり、ストリームはバッファーから再生を開始します。再生中、データはバッファーがいっぱいになるまでストリーミングを続けます。
巻戻し位置がキャッシュ内のデータよりも前の場合、バッファーはフラッシュされ、データは要求された位置でサーバーからストリーミングを開始します。
このプロパティを使用するには、Netstream.inBufferSeek
プロパティを TRUE に設定します。
実装
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
関連する API エレメント
bufferLength | プロパティ |
bufferLength:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バッファーに現在格納されているデータの秒数です。このプロパティを bufferTime
プロパティと組み合わせることにより、あとどれくらいの時間でバッファーが満たされるかを見積もることができます。例えば、バッファーにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get bufferLength():Number
関連する API エレメント
bufferTime | プロパティ |
bufferTime:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
デフォルト値は 0.1(1/10 秒)です。バッファー内の現在の秒数を調べるには、bufferLength
プロパティを使用します。
サーバーサイド再生リストを再生するには、bufferTime
に少なくとも 1 秒指定する必要があります。再生中に問題が発生した場合は、bufferTime
の長さを増やしてください。
記録されているコンテンツ 記録されている(ライブではない)コンテンツをストリーミングするときにひずみが生じないようにするには、Netstream.bufferTime
の値を 0 に設定しないようにします。記録されているコンテンツの場合、デフォルトでは入力バッファーが使用され、メディアデータがキューに置かれてメディアが適切に再生されます。記録されているコンテンツでは、デフォルト値を使用するか、バッファー時間を延長します。
ライブコンテンツ ライブコンテンツをストリーミングする場合は、bufferTime
プロパティを 0 に設定します。
Flash Player 9.0.115.0 以降、Flash Player では、NetStream.pause()
が呼び出されたときにバッファーをクリアしなくなりました。Flash Player 9.0.115.0 以前は、Flash Player はバッファーが満杯になるまで待機してから再生を開始していましたが、このため遅延がよく発生していました。
1 回の一時停止の場合、NetStream.bufferLength
プロパティには 60 秒または NetStream.bufferTime
の値の 2 倍のうち、いずれか大きい方の値という制限があります。例えば、bufferTime
が 20 秒の場合、Flash Player は NetStream.bufferLength
が 20*2 (40) または 60 のうち、大きい方の値になるまでバッファリングするため、この場合は、bufferLength
が 60 秒になるまでバッファリングします。bufferTime
が 40 秒の場合、Flash Player は bufferLength
が 40*2 (80) または 60 のうち、大きい方の値になるまでバッファリングするため、この場合は、bufferLength
が 80 秒になるまでバッファリングします。
bufferLength
プロパティにも絶対制限があります。pause()
の呼び出しによって bufferLength
が 600 秒またはbufferTime
* 2 の値のいずれか大きい方の値を超えた場合、Flash Player はバッファーをフラッシュし、bufferLength
を 0 にリセットします。例えば、bufferTime
が 120 秒の場合は、bufferLength
が 600 秒に達すると、Flash Player はバッファーをフラッシュします。bufferTime
が 360 秒の場合は、bufferLength
が 720 秒に達すると、Flash Player はバッファーをフラッシュします。
ヒント:例えば、コードで NetStream.pause()
を使用し、閲覧者がコマーシャルを見ている間、データをバッファーし、メインのビデオが開始されたときに一時停止を解除することができます。
一時停止の新しい動作の詳細については、http://www.adobe.com/go/learn_fms_smartpause_jp を参照してください。
Flash Media Server。バッファーの動作は、パブリッシュするストリームまたはサブスクライブするストリームにバッファー時間が設定されているかどうかによって異なります。パブリッシュするストリームの場合、bufferTime
には、送信バッファーに蓄積されたフレームの送信を開始するまでの時間の長さを指定します。高速接続の場合は、バッファー時間を考慮する必要はありません。データは、アプリケーションがバッファリングすると即座に送信されます。一方、低速接続では、アプリケーションがデータをバッファリングする速度とクライアントに送信できる速度に大きな差が生じることがあります。
サブスクライブするストリームの場合、bufferTime
には、受信データをバッファリングして、ストリームの表示を開始するまでの時間を指定します。
記録されたストリームを再生するときに、bufferTime
が 0 の場合、Flash はバッファー時間を小さな値(約 10 ミリ秒)に設定します。ライブストリームを後で再生する場合(例えば、再生リストから再生)、このバッファー時間が保持されます。つまり、bufferTime
はストリームに対して 0 以外の値のままになります。
実装
public function get bufferTime():Number
public function set bufferTime(value:Number):void
関連する API エレメント
bufferTimeMax | プロパティ |
bufferTimeMax:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
ライブストリーミングコンテンツ用に、最大バッファー長を秒単位で指定します。デフォルト値は 0 です。バッファー長は、ネットワークとデバイスの問題(送信側と受信側のクロックの誤差など)により、時間の経過と共に長くなることがあります。このプロパティを設定すると、ミーティングや調査などのライブアプリケーション用のバッファー長の上限を設定することができます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
bufferTimeMax > 0
および bufferLength >= bufferTimeMax
の場合、bufferLength
が bufferTime
に到達するまで、オーディオは早く再生されます。ライブストリームがビデオのみの場合は、ビデオは bufferLength
が bufferTime
に達するまで高速で再生されます。
再生の遅延の程度(bufferLength
と bufferTime
の差異)に応じて、Flash Player は、キャッチアップレートを 1.5%~6.25%の間で制御します。ストリームにオーディオが含まれている場合、高速な再生は、ドメインで音声の歪みを最小化するダウンサンプリング周波数を使用することにより実現されます。
bufferTimeMax
プロパティを設定すると、次の場合にライブバッファーストリームのキャッチアップが有効になります。
- Flash Media Server からライブメディアをストリーミングする場合。
- Data Generation Mode Flash Mode(
NetStream.appendBytes()
)でライブメディアをストリーミングする場合。
実装
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
関連する API エレメント
bytesLoaded | プロパティ |
bytesLoaded:uint
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
既にアプリケーションにロードされているデータのバイト数です。このプロパティを bytesTotal
プロパティと組み合わせることにより、あとどれくらいの時間でバッファーが満たされるかを見積もることができます。例えば、バッファーにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get bytesLoaded():uint
関連する API エレメント
bytesTotal | プロパティ |
checkPolicyFile | プロパティ |
checkPolicyFile:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ビデオファイルのロードを開始する前に、アプリケーションが、ロードするビデオファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。このプロパティは、プログレッシブビデオのダウンロードと、呼び出し元の SWF ファイル自体のドメインの外部にあるファイルのロードに使用します。このプロパティは、RTMP を使用している場合は無視されます。
このプロパティを true
に設定して、呼び出し元の SWF の外部にあるドメインからロードしたビデオファイル上の BitmapData.draw()
を呼び出します。BitmapData.draw()
メソッドを使用すると、ビデオにピクセルレベルでアクセスできます。ロード時に BitmapData.draw()
を呼び出すときに checkPolicyFile
プロパティを true
に設定していないと、SecurityError
例外を受け取る場合があります。これは、必要なポリシーファイルがダウンロードされていないためです。
ロードしているビデオに対するピクセルレベルのアクセスが必要ない場合は、このプロパティを true に設定しないでください。ポリシーファイルを確認すると、ネットワーク帯域幅が消費されるため、ダウンロードの開始が遅れる場合があります。
NetStream.play()
メソッドを呼び出すときに checkPolicyFile
の設定が true
になっていると、Flash Player または AIR ランタイムで該当するクロスドメインポリシーファイルが正常にダウンロードされるか、NetStream.play() によるダウンロードが開始される前にそのようなポリシーファイルは存在しないと判定されるか、いずれかになります。ポリシーファイルの存在を確認するため、Flash Player または AIR ランタイムは次のアクションをこの順番で実行します。
- アプリケーションは、既にダウンロードされているポリシーファイルを考慮します。
- アプリケーションは、
Security.loadPolicyFile()
メソッドの呼び出しで指定された保留中ポリシーファイルをダウンロードしようとします。 - アプリケーションは
NetStream.play()
に渡された URL に対応するデフォルトの場所からポリシーファイルをダウンロードしようとします。その URL と同じサーバー上の/crossdomain.xml
がデフォルトの場所です。
どのような場合も、Flash Player または Adobe AIR では、該当するポリシーファイルがビデオのサーバー上に存在しており、ポリシーファイルの場所に基づいて play()
に渡された URL にあるオブジェクトへのアクセスを提供し、<allow-access-from>
タグによって呼び出し元コードのファイルのドメインがビデオにアクセスできるようにする必要があります。
checkPolicyFile
を true
に設定した場合、アプリケーションはビデオをダウンロードする前に、ポリシーファイルが検証されるまで待機します。BitmapData.draw()
の呼び出しなど、ビデオデータに対するピクセルレベルの操作は、NetStream オブジェクトから onMetaData
イベントまたは NetStatus
イベントを受け取るまで実行を待つ必要があります。
checkPolicyFile
を true
に設定したが関連ポリシーファイルが見つからない場合、エラーになって SecurityError 例外がスローされるのは、ポリシーファイルを必要とする操作を実行してからです。
サーバーサイド HTTP リダイレクトを使用する URL からファイルをダウンロードする場合は、checkPolicyFile
に注意してください。アプリケーションは、NetStream.play()
で指定する初期 URL に対応するポリシーファイルを取得しようとします。最終的なファイルが HTTP リダイレクトによって別の URL から取得される場合、最初にダウンロードされたポリシーファイルはファイルの最終的な URL(セキュリティ判定においてはこの URL が重要となります)に適用できないことがあります。
ポリシーファイルについて詳しくは、『ActionScript 3.0 開発ガイド』の「Web サイトのコントロール(ポリシーファイル)」および Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
実装
public function get checkPolicyFile():Boolean
public function set checkPolicyFile(value:Boolean):void
関連する API エレメント
client | プロパティ |
client:Object
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
F4V または FLV ファイルデータのストリーミングの処理で、コールバックメソッドの呼び出し元となるオブジェクトを指定します。デフォルトのオブジェクトは、作成される NetStream オブジェクト this
です。client
プロパティを別のオブジェクトに設定すると、コールバックメソッドはその別のオブジェクトで呼び出されます。NetStream.client
オブジェクトは、関数 onCuePoint()
、onImageData()
、onMetaData()
、onPlayStatus()
、onSeekPoint()
、onTextData()
および onXMPData()
を呼び出して、関連付けられたデータオブジェクトを受け取ることができます。
client
プロパティをイベントハンドラーに関連付けるには:
- オブジェクトを作成し、NetStream オブジェクトの
client
プロパティに割り当てます。var customClient:Object = new Object(); my_netstream.client = customClient;
- 必要なデータイベントに対するハンドラー関数をクライアントオブジェクトのプロパティとして割り当てます。
customClient.onImageData = onImageDataHandler;
- 以下のようなデータイベントオブジェクトを受け取るハンドラー関数を記述します。
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
データがストリームを通るとき、または再生中、データイベントオブジェクト(この場合は imageData
オブジェクト)にデータが取り込まれます。 onImageData
の説明を参照してください。client
プロパティに関連付けられたオブジェクトの例がすべて記載されています。
client
プロパティをサブクラスに関連付けるには:
- ハンドラー関数を伴うサブクラスがデータイベントオブジェクトを受け取るように作成します。
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- サブクラスのインスタンスを NetStream オブジェクトの
client
プロパティに割り当てます。my_netstream.client = new CustomClient();
データがストリームを通るとき、または再生中、データイベントオブジェクト(この場合は info
オブジェクト)にデータが取り込まれます。 NetStream クラスの最後にあるクラス例を参照してください。client
プロパティへのサブクラスインスタンスの割り当てが記載されています。
実装
public function get client():Object
public function set client(value:Object):void
例外
TypeError — client プロパティは、null 以外のオブジェクトに設定する必要があります。
|
関連する API エレメント
currentFPS | プロパティ |
currentFPS:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
1 秒あたりの表示フレーム数です。複数のシステム上で再生できるようにビデオファイルを書き出す場合、テスト中にこの値をチェックすることで、ファイルの書き出し時にどの程度の圧縮が必要かを見極めることができます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get currentFPS():Number
dataReliable | プロパティ |
dataReliable:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、NetStream.send()
呼び出しが完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信された NetStream.send()
呼び出しは完全に信頼できます。FALSE の場合、NetStream.send()
呼び出しは完全な信頼性を備えて送信されることはありませんが、一定の時間再送信された後、消失します。値を FALSE に設定すれば、データ品質を犠牲にして、レーテンシーを低減できます。
部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
関連する API エレメント
farID | プロパティ |
farNonce | プロパティ |
inBufferSeek | プロパティ |
inBufferSeek:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
表示されたデータがスマートシーク用にキャッシュされているか(TRUE
)、キャッシュされていないか(FALSE
)を指定します。デフォルト値は FALSE です
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
Flash Media Server 3.5.3 および Flash Player 10.1 は連携してスマートシークをサポートします。スマートシークは、サーバー内のデータを要求せずに、巻き戻しと再生用のバッファーを使用します。標準のシークでは、バッファー済みのデータをフラッシュし、シーク時間に基づいて新しいデータを送信するようにサーバーに要求します。
NetStream.step()
を呼び出して、指定した数のフレームを進めるか巻き戻します。NetStream.seek()
を呼び出して、指定した数のフレームを前方へまたは後方へシークします。
スマートシークにより、サーバーの負荷が減少し、シークのパフォーマンスが向上します。inBufferSeek=true
に設定し、step()
およびseek()
を呼び出して以下のものを作成します。
- クライアント側 DVR 機能。新しいビデオの配信をサーバーに要求する代わりに、クライアント側のバッファー内をシークします。
- トリックモード。フレームのコマ送り再生、早送り、巻き戻り、スローモーション再生中の早送りなどを実行するプレーヤーを作成します。
inBufferSeek=true
と設定されていて、NetStream.seek()
の呼び出しに成功した場合、NetStatusEvent の info.description
プロパティには、ストリング "client-inBufferSeek"
が含まれます。
NetStream.step()
の呼び出しに成功した場合、NetStatusEvent の info.code
プロパティにはストリング "NetStream.Step.Notify"
が含まれます。
実装
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
関連する API エレメント
info | プロパティ |
info:NetStreamInfo
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
サービスの質に関する統計情報をプロパティが持つ NetStreamInfo オブジェクトを返します。このオブジェクトは現在の状態のスナップショットです。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get info():NetStreamInfo
関連する API エレメント
liveDelay | プロパティ |
liveDelay:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ライブ(バッファリングされていない)モードでサブスクライブしているストリームバッファー内にあるデータの秒数です。このプロパティは、現在のネットワーク転送の遅延時間を示します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
このプロパティは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。
このプロパティの値を取得して、ストリームの転送品質を大まかに判断し、それをユーザーに伝えることができます。
実装
public function get liveDelay():Number
maxPauseBufferTime | プロパティ |
maxPauseBufferTime:Number
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
一時停止モード中にメッセージをバッファリングしておく時間を秒単位で指定します。このプロパティを使用して、一時停止モード中に行うバッファリングの量を制限できます。NetStream.bufferLength
の値がこの制限に達するとバッファリングが停止します。
この値を設定しない場合は、デフォルトの 60 秒または各一時停止の NetStream.bufferTime
の値の 2 倍のいずれか高いほうに設定されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
関連する API エレメント
multicastAvailabilitySendToAll | プロパティ |
multicastAvailabilitySendToAll:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、ピアーツーピアーマルチキャストフラグメント可用性メッセージがすべてのピアーに送信されるか、1 つのピアーにのみ送信されるかを指定します。値が TRUE の場合、メッセージが指定した間隔ですべてのピアーに一度だけ送信されることを指定します。値が FALSE の場合、メッセージが指定した間隔で 1 つのピアーにのみ送信されることを指定します。間隔は multicastAvailabilityUpdatePeriod
プロパティによって決まります。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
関連する API エレメント
multicastAvailabilityUpdatePeriod | プロパティ |
multicastAvailabilityUpdatePeriod:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、メッセージがピアーに送信される間隔を秒単位で指定し、ローカルノードで新しいピアーツーピアーマルチキャストメディアフラグメントを使用できることをピアーに通知します。この値を大きくすると、バッチ効率が向上し、制御オーバーヘッドは減少しますが、フラグメントが消失するまでにそれらのフラグメントを取得する時間が短縮されることにより、受信側での品質が低下する可能性があります。値を小さくすると、レーテンシーが下がり、制御オーバーヘッドが増加します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
関連する API エレメント
multicastFetchPeriod | プロパティ |
multicastFetchPeriod:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、ピアーツーピアーマルチキャストメディアフラグメントが利用可能になったことをローカルノードが認識してから、これらのフラグメントをピアーから取得するまでの時間を秒単位で指定します。この値によって、フラグメントをピアーから取得する前に、事前にローカルノードに移動させることができます。また、複数のピアーにフラグメントの提供を通知できるので、取得のための負荷を複数のピアーに分散できます。
この値を大きくすると、ピアーツーピアーメッシュ内の負荷バランスと公平性が向上しますが、利用可能な multicastWindowDuration
が減り、レーテンシーが低下します。 この値を小さくすると、取得が要求されるときにレーテンシーが低下しますが、重複したデータ受信が増え、ピアーツーピアーメッシュの負荷バランスが低下します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
関連する API エレメント
multicastInfo | プロパティ |
multicastInfo:NetStreamMulticastInfo
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、プロパティにサービス品質に関する統計が含まれる NetStreamMulticastInfo オブジェクトを返します。このオブジェクトは現在の状態のスナップショットです。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastInfo():NetStreamMulticastInfo
関連する API エレメント
multicastPushNeighborLimit | プロパティ |
multicastPushNeighborLimit:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、マルチキャストメディアを事前に移動するピアーの最大数を指定します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastPushNeighborLimit():Number
public function set multicastPushNeighborLimit(value:Number):void
multicastRelayMarginDuration | プロパティ |
multicastRelayMarginDuration:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、指定された継続時間が過ぎてもピアーツーピアーマルチキャストデータを要求するピアーに対してデータを送信できるよう、データを利用できる継続時間を秒単位で指定します。この継続時間は multicastWindowDuration
プロパティで指定されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
関連する API エレメント
multicastWindowDuration | プロパティ |
multicastWindowDuration:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、ピアーツーピアーマルチキャスト再構築ウィンドウの継続時間を秒単位で指定します。値を小さくすると、レーテンシーは小さくなりますが、すべてのフラグメントを取得するために十分な時間がなくなり、品質が低下する場合があります。逆に時間を大きくすると、すべてのフラグメントを取得するための時間が十分とれるので、品質は向上しますが、それに伴って、レーテンシーが増加します。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
関連する API エレメント
nearNonce | プロパティ |
objectEncoding | プロパティ |
objectEncoding:uint
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
この NetStream オブジェクトのエンコード(AMF バージョン)です。NetStream オブジェクトは、関連付けされた NetConnection オブジェクトからその objectEncoding
値を継承します。ActionScript 3.0 SWF ファイルで Flash Player 9 以前にリリースされたサーバーと通信する必要がある場合は、このプロパティを理解することが重要です。詳細については、NetConnection クラスの objectEncoding
プロパティに関する説明を参照してください。
このプロパティの値は、ローカルストリームかリモートストリームかによって異なります。null
が NetConnection.connect()
メソッドに渡されたローカルストリームでは、NetConnection.defaultObjectEncoding
の値が返されます。サーバーに接続しているリモートストリームでは、このサーバーとの接続のオブジェクトエンコーディングが返されます。
接続されていない場合にこのプロパティを読み取ろうとするか、このプロパティを変更しようとすると、アプリケーションにより例外がスローされます。
実装
public function get objectEncoding():uint
関連する API エレメント
peerStreams | プロパティ |
soundTransform | プロパティ |
soundTransform:flash.media:SoundTransform
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
この NetStream オブジェクトのサウンドを制御します。詳細については、SoundTransform クラスを参照してください。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
関連する API エレメント
time | プロパティ |
time:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
再生ヘッドの位置(秒単位)です。
Flash Media Server サブスクライブするストリームの場合、ストリームを再生した秒数です。パブリッシュするストリームの場合、ストリームをパブリッシュした秒数です。この数値は、小数点以下 3 桁までの精度があります。この数値に 1000 を掛けると、ストリームを再生したミリ秒単位の時間数になります。
サブスクライブするストリームでは、サーバーがデータの送信を停止してもストリームが開いたままになっている場合、time
プロパティの値の増加が止まります。サーバーがデータの送信を再開すると、値の増加が止まった個所から値の増加が続けられます。
再生リストの要素間でストリームを切り替えても、time
の値は増加を続けます。呼び出した NetStream.play()
の reset
が 1
または true
に設定されている場合、または NetStream.close()
を呼び出した場合、このプロパティは 0 に設定されます。
実装
public function get time():Number
関連する API エレメント
useHardwareDecoder | プロパティ |
useHardwareDecoder:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 3 |
ストリームでハードウェアアクセラレーターによるデコードを使用するかどうかを指定します。
注意:ビデオの再生中にこのプロパティを設定することはできません。NetStream.play()
を呼び出す前に設定してください。
デフォルト値: true。
実装
public function get useHardwareDecoder():Boolean
public function set useHardwareDecoder(value:Boolean):void
関連する API エレメント
useJitterBuffer | プロパティ |
useJitterBuffer:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.3, AIR 3.3 |
ライブの非バッファーストリーミング(bufferTime = 0)の待ち時間を最小化します。保守的なプッシュベースのキャッチアップメカニズムの代わりに、オーディオメッセージが適応型ジッターバッファーに配置されます。スピーカーデバイスでオーディオが必要になったときに、メッセージがジッターバッファーから取得され、デコードされ、再生されます。Speex および G.711 では、この設定にかかわらず常にこのプルベースのアプローチが使用されます(Speex/G.711 の場合、useJitterBuffer は true を返します)。非バッファーモードで有効にすると、Speex、G.711、Nellymoser、MP3、AAC などのすべてのコーデックでジッターバッファーが使用されます。このプロパティによるバッファーモード(bufferTime > 0)への影響はなく、useJitterBuffer は false を返します。
実装
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | プロパティ |
videoReliable:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、ビデオが完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信されるすべてのビデオは完全に信頼できます。FALSE の場合、送信されるビデオは完全には信頼できませんが、一定の時間再送信されてから、消失します。FALSE 値を使用すれば、ビデオ品質を犠牲にして、レーテンシーを低減できます。
部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
関連する API エレメント
videoSampleAccess | プロパティ |
videoSampleAccess:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーにビデオストリームのキャプチャを許可するかどうかを指定します。FALSE の場合、ビデオストリームをキャプチャしようとするサブスクライバーには権限エラーが表示されます。
注意:このプロパティは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
実装
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
関連する API エレメント
videoStreamSettings | プロパティ |
videoStreamSettings:VideoStreamSettings
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11/ConnectAddin, AIR 3 |
ストリーム圧縮のプロパティを指定します。詳しくは、VideoStreamSettings
を参照してください。システムに接続されているカメラがない場合は、null が返されます。
実装
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
関連する API エレメント
NetStream | () | コンストラクター |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
メディアファイルを再生するときに使用できるストリームを作成し、NetConnection オブジェクトにデータを送信します。
NetStream オブジェクトの netStatus
イベントを処理しないことは無効であるとみなされます。エラーを防ぐには、NetStream オブジェクトの作成後、その play()
メソッドを呼び出すまでの間に、netStatus
へのリスナーを登録します。
connection:NetConnection — NetConnection オブジェクトです。
| |
peerID:String (default = "connectToFMS ") — このオプションのパラメーターは Flash Player 10 以降で、RTMFP 接続して使用する場合に利用可能です。(NetConnection.protocol プロパティの値が "rtmfp" でない場合、このパラメーターは無視されます。)次の値のいずれかを使用します。
ほとんどの場合、 このパラメーターをコンストラクターのステートメントに含めて |
例外
ArgumentError — NetConnection インスタンスは接続されていません。
|
関連する API エレメント
DIRECT_CONNECTIONS
farID
flash.media.Video.attachCamera()
flash.net.GroupSpecifier
flash.net.GroupSpecifier.groupspecWithAuthorizations()
flash.net.GroupSpecifier.groupspecWithoutAuthorizations()
flash.net.GroupSpecifier.multicastEnabled
flash.net.NetConnection
flash.net.NetConnection.nearID
flash.net.NetConnection.protocol
flash.net.NetGroup
flash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"
flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
例 ( この例の使用方法 )
videoURL
に割り当てられたビデオを連続的にダウンロードし、表示する接続を示しています。
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
videoURL
に割り当てられた)ビデオを、connect()
コマンドで指定されているリモート Flash Media Server インスタンスでストリーミングし、表示する接続を示しています。
var my_video:Video = new Video(); addChild(my_video); 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_video.attachNetStream(my_ns); my_ns.play(videoURL);
appendBytes | () | メソッド |
public function appendBytes(bytes:ByteArray):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
ByteArray をプレイアウトのために NetStream に渡します。「データ生成モード」の NetStream に対してこのメソッドを呼び出します。NetStream をデータ生成モードにするには、null
に接続されている NetConnection 上に作成された NetStream に対して NetStream.play(null)
を呼び出します。データ生成モードになっていない NetStream に対して appendBytes()
を呼び出すとエラーになり、例外が発生します。
注意:このメソッドは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
バイトパーサーは、ヘッダー付きの FLV ファイルを認識します。ヘッダーが解析された後、appendBytes()
は、今後のすべての呼び出しが同じ実際のファイルまたは仮想ファイルの連続であると予期します。appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
が呼び出さるまでは、別のヘッダーは予期されません。
NetStream オブジェクトには、appendBytes()
から NetStream への FIFO と、プレイアウトバッファーの 2 つのバッファーがあります。FIFO は部分 FLV タグ再アセンブリバッファで、不完全な FLV タグが 1 つしか含まれません。NetStream.seek()
を呼び出すと、両方のバッファーがフラッシュされます。seek()
を呼び出してから、appendBytesAction()
を呼び出してタイムスケールをリセットし、付加された次のメッセージのタイムスタンプから開始します。
FLV タグが完全になるまで、appendBytes()
を呼び出すたびに、バイトが FIFO に追加されます。FLV タグが完全になったら、そのタグはプレイアウトバッファーに移動します。appendBytes()
を呼び出すことで、複数の FLV タグを書き込むことができます。既存の FLV タグは、最初のバイトによって完全になります(この FLV タグはプレイアウトバッファーに移動します)。完全な FLV タグはプレイアウトバッファーに移動します。完全な FLV タグの形成に使用されなかった残りのバイトは FIFO に移動します。FIFO 内のバイトは、appendBytes()
への呼び出しによって完全になるか、RESET_SEEK
または RESET_BEGIN
引数を指定して appendBytesAction()
を呼び出すことでフラッシュされます。
注意:バイトパーサーは、以降の appendBytes()
への呼び出しが行われるまで、その appendBytes()
への呼び出しを完全にはデコードできない場合があります。
パラメーター
bytes:ByteArray |
関連する API エレメント
appendBytesAction | () | メソッド |
public function appendBytesAction(netStreamAppendBytesAction:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
タイムスケールの不連続性を示し、FIFO をフラッシュして、ファイルヘッダーまたは FLV タグの先頭を予期するようバイトパーサーに指示します。
注意:このメソッドは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
NetStream.seek()
を呼び出すと、NetStream バッファーがフラッシュされます。バイトパーサーは、appendBytesAction()
を呼び出して RESET_BEGIN
または RESET_SEEK
引数を渡すまでフラッシュモードのままです。「NetStream.Seek.Notify
」イベントをキャプチャして、シーク後に appendBytesAction()
を呼び出します。新しいファイルヘッダーは、再生リストおよび NetStream.seek()
を呼び出さないシークをサポートできます。
このメソッドを呼び出して、onSeekPoint()
コールバックのバイトカウンターをリセットすることもできます。
パラメーター
netStreamAppendBytesAction:String |
関連する API エレメント
attach | () | メソッド |
public function attach(connection:NetConnection):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
新規 NetConnection オブジェクトにストリームを接続します。接続が中断された後に再接続してから、このメソッドを呼び出して、NetStream を新しい NetConnection オブジェクトに関連付けます。Flash Player および AIR は、接続が切断されたときの再生ポイントからストリーミングを再開します。また、このメソッドを使用して、負荷分散を実装することもできます。
このメソッドでは、Flash Media Server バージョン 3.5.3 以降が必要です。
このメソッドを使用して ストリームの再接続を実装するには、Flash Media Server 3.5.3 のマニュアルを参照してください。
このメソッドを使用して負荷分散を実装するには、以下の手順を実行します。
- 接続されたストリームを別のサーバーの NetConnection オブジェクトに接続します。
- ストリームが新しい接続に正しく接続されたら、データが漏れ出すのを防ぐために、以前の接続で
NetConnection.close()
を呼び出します。 NetStream.play2()
を呼び出して、NetStreamPlayOptions.transition
の値を RESUME に設定します。残りの NetStreamPlayOptions プロパティを、最初にNetStream.play()
またはNetStream.play2()
を呼び出したときと同じ値に設定して、ストリームを開始します。
パラメーター
connection:NetConnection |
関連する API エレメント
attachAudio | () | メソッド |
public function attachAudio(microphone:Microphone):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ソースとして渡された Microphone オブジェクトからのオーディオストリームを、NetStream オブジェクトに接続します。このメソッドは、指定されたストリームの発行者だけが使用できます。
このメソッドを Flash Media Server で使用し、ライブオーディオをサーバーに送信します。このメソッドは、publish()
メソッドを呼び出す前、または呼び出した後に呼び出します。
Microphone.rate
プロパティを、サウンドキャプチャデバイスのレートに合わせて設定します。setSilenceLevel()
を呼び出して、無音レベルのしきい値を設定します。オーディオストリームのサウンドプロパティ(ボリュームとパン)を制御するには、Microphone.soundTransform
プロパティを使用します。
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://server.domain.com/app"); var ns:NetStream = new NetStream(nc); 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; ns.attachAudio(live_mic); ns.publish("mic_stream","live")
オーディオを聞くには、NetStream.play()
メソッドを呼び出し、DisplayObjectContainer.addChild()
を呼び出して、オーディオを表示リストのオブジェクトに転送します。
パラメーター
microphone:Microphone — 送信するオーディオストリームのソースです。
|
関連する API エレメント
attachCamera | () | メソッド |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
カメラからビデオのキャプチャを開始します。または、theCamera
が null
に設定されると、キャプチャを停止します。このメソッドは、指定されたストリームの発行者だけが使用できます。
このメソッドは、Flash Media Server で使用することを目的としています。詳細については、クラスの説明を参照してください。
ビデオソースのアタッチ後に、NetStream.publish()
を呼び出して転送を開始する必要があります。ビデオを表示するサブスクライバは、NetStream.play()
と Video.attachCamera()
の各メソッドを呼び出して、ステージ上にビデオを表示する必要があります。
snapshotMilliseconds
を使用して値 0 を指定すると、単一のスナップショットを送信できます。また、正の数を指定して、ビデオフィードに指定のミリ秒数のトレーラーを追加すると、一連のスナップショット、つまり事実上のコマ落としビデオを送信することができます。 トレーラーは、ビデオメッセージの表示時間を拡張します。attachCamera()
を、snapshotMilliseconds
に正の値を指定して繰り返し呼び出すと、スナップショットとトレーラーが交互に繰り返されるシーケンスになり、コマ落としビデオが作成されます。例えば、毎日 1 フレームずつキャプチャして、ビデオファイルに追加することができます。サブスクライバがファイルを再生すると、各フレームが指定のミリ秒間画面上に表示され、その後、次のフレームが表示されます。
この snapshotMilliseconds
パラメーターの目的は、fps
パラメーター(Camera.setMode()
で設定可能)とは異なります。snapshotMilliseconds
は、記録されたフレーム間の経過時間を制御するために指定します。fps
は、記録時と再生時の経過時間を制御するために Camera.setMode()
を使用して指定します。
例えば、5 分ごとにスナップショットを 1 枚撮り、合計で 100 枚のスナップショットを撮るとします。この操作を行うには、次の 2 つの方法があります。
NetStream.attachCamera(myCamera, 500)
コマンドを 5 分に 1 回、合計 100 回実行できます。この場合、記録に 500 分かかりますが、生成されるファイルは 50 秒(100 フレーム、各フレーム間 500 ミリ秒)で再生されます。Camera.setMode()
コマンドを、fps
に 1/300(300 秒ごとに 1 回、つまり 5 分に 1 回)の値を指定して発行してからNetStream.attachCamera(source)
コマンドを発行すると、カメラは 500 分間連続してキャプチャするようになります。生成されるファイルは、500 分、つまり記録に要した時間と同じ長さで再生され、各フレームは 5 分間表示されます。
どちらの手法でも、同じ 500 個のフレームがキャプチャされます。どちらのアプローチも有用ですが、使用するアプローチは、主に再生要件によって異なります。例えば、後者の場合、始めから最後までオーディオを録音し続けることができます。また、どちらの場合もファイルサイズはほとんど同じです。
パラメーター
theCamera:Camera — ビデオ転送のソースです。有効な値は、ビデオのキャプチャを開始する Camera オブジェクトと null です。null を渡すと、ビデオのキャプチャが停止され、ユーザーが送信した追加パラメーターはどれも無視されます。
| |
snapshotMilliseconds:int (default = -1 ) — ビデオストリームが連続的、単一のフレーム、コマ撮り写真の作成に使用する一連の単一フレームのいずれであるかを指定します。
|
close | () | メソッド |
public function close():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ストリーム上のすべてのデータの再生を停止し、time
プロパティを 0 に設定して、他のユーザーがストリームにアクセスできるようにします。また、このメソッドは、HTTP を使用してダウンロードされたビデオファイルのローカルコピーを削除します。アプリケーションでは、アプリケーションで作成したファイルのローカルコピーは削除されますが、コピーがキャッシュディレクトリに残る場合があります。ビデオファイルをキャッシュやローカル記憶域に一切残さないようにする必要がある場合には、Flash Media Server を使用してください。
Flash Media Server を使用している場合、パブリッシュしているストリームから NetStream.play()
を呼び出すか、サブスクライブしているストリームから NetStream.publish()
を呼び出すときに、このメソッドが暗黙的に呼び出されます。次の点に注意してください。
-
パブリッシュしているストリームから
close()
を呼び出すと、ストリームのパブリッシュが停止し、発行者は別の目的でストリームを使用できるようになります。ストリームのパブリッシュが停止するため、サブスクライバはストリームでパブリッシュされた内容を受信できなくなります。 -
サブスクライブしているストリームから
close()
を呼び出すと、サブスクライバに対するストリームの再生が停止し、サブスクライバは別の目的でストリームを使用できるようになります。他のサブスクライバの再生は停止しません。 -
サブスクライブしているストリームは、そのストリームを閉じたり、
flash.net.NetStream.play(false)
を使用してストリームの種類を変更したりせずに、再生を停止できます。
関連する API エレメント
dispose | () | メソッド |
public function dispose():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 3.0 |
NetStream オブジェクトによって保持されているリソースをすべて解放します。
dispose()
メソッドは close()
メソッドと似ています。これらのメソッドの最も大きな違いは、dispose()
の場合は現在のビデオフレームの表示に使用されているメモリも解放されるという点です。対象となるフレームが画面上に現在表示されていると、表示は空白になります。それに対し、close()
メソッドではメモリが解放されないので表示が空白にはなりません。
onPeerConnect | () | メソッド |
public function onPeerConnect(subscriber:NetStream):Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
ピアーがパブリッシュするストリームが、ピアーがサブスクライブするストリームに一致する場合に呼び出されます。サブスクライバが発行者に接続する前にこのメソッドを呼び出すと、ActionScript コードはピアーツーピアーパブリッシュに対するアクセスを細かく制御できます。次のコードは、このメソッドのコールバック関数の作成方法の例です。
var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;
ピアーの発行者がこのメソッドを実装していない場合、すべてのピアーはパブリッシュされたすべてのコンテンツを再生できます。
パラメーター
subscriber:NetStream |
Boolean |
pause | () | メソッド |
public function pause():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ビデオストリームの再生を一時停止します。ビデオが既に一時停止している場合は、このメソッドを呼び出しても何も実行されません。ビデオを一時停止した後で再生を再開するには、resume()
を呼び出します。一時停止と再生を切り替える(最初にビデオを一時停止し、次に再開する)には、togglePause()
を呼び出します。
Flash Player 9.0.115.0 以降、Flash Player では、NetStream.pause()
が呼び出されたときにバッファーをクリアしなくなりました。この動作を「スマート一時停止」と呼びます。Flash Player 9.0.115.0 以前は、Flash Player はバッファーが満杯になるまで待機してから再生を開始していましたが、このため遅延がよく発生していました。
注意:後方互換性を確保する目的で現在も "NetStream.Buffer.Flush"
イベント(NetStatusEvent.info
プロパティを参照)は送出されますが、サーバーでバッファのフラッシュ処理は行われません。
1 回の一時停止の場合、NetStream.bufferLength
プロパティには 60 秒または NetStream.bufferTime
の値の 2 倍のうち、いずれか大きい方の値という制限があります。例えば、bufferTime
が 20 秒の場合、Flash Player は NetStream.bufferLength
が 20*2(40)または 60 のうち、大きい方の値になるまでバッファーするため、この場合は、bufferLength
が 60 秒になるまでバッファーします。bufferTime
が 40 秒の場合、Flash Player は bufferLength
が 40*2 (80) または 60 のうち、大きい方の値になるまでバッファーするため、この場合は、bufferLength
が 80 秒になるまでバッファーします。
bufferLength
プロパティにも絶対制限があります。pause()
の呼び出しによって bufferLength
が 600 秒またはbufferTime
* 2 の値のいずれか大きい方の値を超えた場合、Flash Player はバッファーをフラッシュし、bufferLength
を 0 にリセットします。例えば、bufferTime
が 120 秒の場合は、bufferLength
が 600 秒に達すると、Flash Player はバッファーをフラッシュします。bufferTime
が 360 秒の場合は、bufferLength
が 720 秒に達すると、Flash Player はバッファーをフラッシュします。
ヒント:例えば、コードで NetStream.pause()
を使用し、閲覧者がコマーシャルを見ている間、データをバッファーし、メインのビデオが開始されたときに一時停止を解除することができます。
関連する API エレメント
play | () | メソッド |
public function play(... arguments):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ローカルディレクトリまたは Web サーバーからメディアファイルを再生します。Flash Media Server からメディアファイルまたはライブストリームを再生します。NetStatusEvent
オブジェクトを送出して、ステータスおよびエラーメッセージをレポートします。
サポートされているコーデックおよびファイル形式について詳しくは、以下を参照してください。
- ADOBE FLASH MEDIA SERVER 3.5 技術概要
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- FLV/F4V オープン仕様のドキュメント
ファイルまたはライブストリームを再生するためのワークフロー
- ビデオを表示するための Video オブジェクトを作成し、
addChild()
を呼び出してそのビデオをステージに追加します。 NetConnection オブジェクトを作成し、
NetConnection.connect()
を呼び出します。ローカルディレクトリまたは Web サーバーからファイルを再生するには、null を渡します。
記録されたファイルまたはライブストリームを Flash Media Server から再生するには、Flash Media Server アプリケーションの URI を渡します。
- NetConnection オブジェクトの
addEventListener()
メソッドを呼び出して、netStatus
(NetStatusEvent.NET_STATUS
)イベントをリッスンします。 - 「
NetConnection.Connect.Success
」で、NetStream オブジェクトを作成し、NetConnection オブジェクトをコンストラクターに渡します。 - Video オブジェクトの
attachNetStream()
メソッドを呼び出して、NetStream オブジェクトを渡します。 NetStream オブジェクトの
play()
メソッドを呼び出します。ライブストリームを再生するには、
NetStream.publish()
メソッドに渡されたストリーム名を渡します。記録されたファイルを再生するには、ファイル名を渡します。
注意:ベストプラクティスとして、必ずステージに Video オブジェクトを追加し、次に NetStream をそのステージに関連付けて、NetStream オブジェクトの play()
メソッドを呼び出すようにしてください。
データ生成モードの有効化
「データ生成モード」を有効化するには、play(null)
を呼び出します。このモードでは、appendBytes()
メソッドを呼び出して、データを NetStream に配信します。データ生成モードを使用して、Apache HTTP Server 上の Adobe HTTP ダイナミックストリーミングモジュールからのコンテンツを HTTP 経由でストリーミングします。HTTP ダイナミックストリーミングを使用することで、クライアントはファイル内の任意のポイントをすばやくシークできます。Open Source Media Framework(OSMF)は、VOD(ビデオオンデマンド)とライブストリームの再生用に、HTTP ダイナミックストリーミングをサポートします。NetStream のデータ生成モードを使用する方法の例については、OSMF ソースをダウンロードしてください。HTTP ダイナミックストリーミングについて詳しくは、HTTP ダイナミックストリーミングを参照してください。
Flash Media Server を使用しないでこのメソッドを使用する場合、セキュリティに関する考慮事項があります。信頼できるローカルのサンドボックスまたはネットワークアクセスを許可されたローカルのサンドボックスのファイルは、リモートサンドボックスからビデオファイルをロードおよび再生することができますが、URL ポリシーファイルで明示的な許可が与えられていない限り、リモートファイルのデータにアクセスできません。また、Flash Player で実行されている SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツが含まれる HTML ページの allowNetworking
パラメーター(object
タグおよび embed
タグ)を設定します。セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
パラメーター
... arguments — ローカルファイルの再生
メディアファイルの場所。引数には、String、 Flash Media Server からのメディアファイルの再生
次の表に記載されているファイル形式を再生できます。構文は、ファイル形式によって異なります。
データ生成モードの有効化
「データ生成モード」を有効にするには、 AIR 3.0 for iOS の H.264 ビデオに関する特別な考慮事項 H.264 ビデオでは、ビデオ再生用 iOS API はファイルまたはストリームへの URL のみ受け付けます。デコードされるデータを H264 ビデオのバッファーに渡すことはできません。ビデオソースに応じて、次のように
|
イベント
status: — DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。code プロパティの値は "DRM.encryptedFLV" です。
|
例外
SecurityError — 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この制限は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
| |
ArgumentError — 少なくとも 1 つのパラメーターを指定する必要があります。
| |
Error — NetStream オブジェクトが無効です。このエラーは、NetConnection の失敗によって発生する場合があります。
|
関連する API エレメント
例 ( この例の使用方法 )
play()
メソッドでファイル名拡張子を指定する必要があります。
ns.play("mp4:samples/record1.f4v", 0, 100, true);
ns.play("livestream");
var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyVideo.attachNetStream(MyNS); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
play2 | () | メソッド |
public function play2(param:NetStreamPlayOptions):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
マルチビットレートのファイル間をシームレスに切り替え、接続が中断し再接続されたときに、NetStream が再開できるようにします。
このメソッドは、NetStream.play()
を拡張したものです。play()
メソッドと同様に、play2()
メソッドは、メディアファイルの再生を開始したり、メディアファイルをキューに追加して再生リストを作成したりします。Flash Media Server で使用する場合、サーバーに要求を出して別のメディアファイルに切り替えることもできます。切り替えはクライアントアプリケーションでシームレスに実行されます。次の機能は、play2()
ストリームの切り替えを使用します。
動的ストリーミング
Flash Media Server 3.5 以降でサポートされる動的ストリーミングにより、マルチビットレートで暗号化されたストリームを使用できます。ビューアーのネットワーク状態の変化に伴って、最適な表示エクスペリエンスを提供するビットレートを受信します。NetStreamInfo
クラスを使用して、ネットワーク条件を監視したり、データに基づいたストリームを切り替えたりします。異なる機能でクライアントのストリームを切り替えることもできます。詳しくは、『Adobe Flash Media Server 開発者ガイド』の「動的ストリーミング」を参照してください。
Adobe では、NetStream クラスを拡張する DynamicStream と呼ばれるカスタム ActionScript クラスを作成しました。DynamicStream クラスを使用すると、ネットワーク状態を検出するための独自のコードを作成する代わりに、アプリケーションでダイナミックストリーミングを実装できます。 独自のダイナミックストリーミングコードの作成を選択した場合でも、DynamicStream クラスを参照実装として使用してください。Flash Media Server のツールとダウンロードページから、このクラスとこのクラスに関するド ュメントをダウンロードしてください。
ストリームの再接続
Flash Media Server 3.5.3 以降でサポートされるストリームの再接続を使用すると、接続が失われたときも、メディアの中断が発生しません。ActionScript ロジックが Flash Media Server に再接続を試みる間、メディアはバッファーを使用して再生を続けます。再接続後、新しい NetConnection で同じ NetStream オブジェクトを使用するために NetStream.attach()
を呼び出します。ストリームへの再接続には、NetStream.attach()
、NetStreamPlayTransitions.RESUME
、および NetStreamPlayTrasitions.APPEND_AND_WAIT
の各 API を使用します。詳しくは、Flash Media Server 3.5.3 のマニュアルを参照してください。
パラメーター
param:NetStreamPlayOptions |
関連する API エレメント
preloadEmbeddedData | () | メソッド |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.5, Flash Lite 4 |
ローカルに保存されたメディアファイルから DRM メタデータを抽出します。
オフライン再生に必要な DRM バウチャーをダウンロードおよびキャッシュする際に最初の手順として preloadEmbeddedMetaData()
を使用します。埋め込み DRM メタデータがメディアファイル内で検出されると、DRMContentData オブジェクトは NetStream クライアントの onDRMContentData
関数に渡されます。この DRMContentData オブジェクトには、コンテンツの再生に求められるバウチャーを取得するために必要な情報が含まれています。バウチャーをダウンロードするには、DRMContentDataObject を DRMManager loadVoucher()
メソッドに渡します。
DRM バウチャーをプリロードする手順には、次のものが含まれます。
-
メタデータをプリロードする新しい NetStream オブジェクトを作成します。
- コールバック関数を NetStream
client
のonDRMContentData
プロパティに割り当てます。 - 新しい NetStreamPlayOptions オブジェクトを作成して、その
streamName
プロパティをローカルビデオファイルの URL ストリングに設定します。 preloadEmbeddedMetadata()
を呼び出して、NetStreamPlayOptions オブジェクトに渡します。onDRMContentData
コールバックに応答して、DRMManagerloadVoucher()
メソッドを呼び出し、DRMContentData オブジェクトに渡します。DRMContentData オブジェクトのauthenticationMethod
プロパティに値userNameAndPassWord
がある場合、バウチャーをロードする前に Media Rights Server 上のユーザーを認証する必要があります。- プリロードに使用した NetStream を閉じます。
注意:メタデータのプリロードとコンテンツの再生の両方で同じ NetStream オブジェクトを使用するには、プリロード操作が生成する onPlayStatus
呼び出しを待機してから再生を開始します。
ダウンロードされたバウチャーは、ローカルキャッシュに保存されます。オンラインでコンテンツを再生すると、バウチャーのダウンロードおよびキャッシュを行うことができます。DRM で保護されたコンテンツファイルが表示されると、キャッシュされたバウチャーはローカルストアから自動的に取得されます。DRMManager を使用すると、バウチャーキャッシュを管理します。
注意:HTTP、HTTPS または RTMP 接続を使用した DRM メタデータのプリロードはサポートされていません。ファイルシステム上に保存されたファイルからのみメタデータのプリロードは可能です。
パラメーター
param:NetStreamPlayOptions — コンテンツファイルを処理中に使用するオプションを説明する NetStreamPlayOptions。
|
関連する API エレメント
publish | () | メソッド |
public function publish(name:String = null, type:String = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
クライアントから Flash Media Server へ、ストリーミングオーディオ、ビデオ、およびデータメッセージを送信します。送信中にストリームを記録することもできます。このメソッドは、ストリームに関する情報を含む NetStatusEvent オブジェクトを送出します。NetStream.publish()
を呼び出す前に、「NetConnection.Connect.Success
」イベントをキャプチャして、アプリケーションが Flash Media Server に正常に接続できたかどうかを確認します。
パブリッシュ中に、FLV または F4V 形式でファイルを記録できます。ファイルを F4V 形式で記録した場合は、分割・統合ツールを使用して編集するか、別のアプリケーションでファイルを再生する必要があります。ツールのダウンロード方法については、www.adobe.com/go/fms_tools_jp を参照してください。
注意:このメソッドを使用してストリームを再生しないでください。ストリームを再生するには、NetStream.play()
メソッドを呼び出します。
ストリームをパブリッシュするためのワークフロー
- NetConnection オブジェクトを作成し、
NetConnection.connect()
を呼び出します。 NetConnection.addEventListener()
を呼び出して、NetStatusEvent イベントを待機します。- 「
NetConnection.Connect.Success
」イベントで、NetStream オブジェクトを作成し、NetConnection オブジェクトをコンストラクターに渡します。 - オーディオとビデオをキャプチャするには、
NetStream.attachAudio()
メソッドとNetStream.attachCamera()
メソッドを呼び出します。 - ストリームをパブリッシュするには、
NetStream.publish()
メソッドを呼び出します。データを記録しながらパブリッシュすることができます。記録すると、ユーザーがデータを後で再生できるようになります。
注意: NetStream で可能なのはストリームのパブリッシュまたは再生のいずれかです。両方を行うことはできません。ストリームをパブリッシュしてサーバーから再生を表示するには、2 つの NetStream オブジェクトを作成します。複数の NetStream オブジェクトを 1 つの NetConnection オブジェクトに送信できます。
Flash Media Server では、ストリームの記録時にファイルが作成されます。デフォルトでは、NetConnection.connect()
に渡されたアプリケーションインスタンス名が付いたディレクトリが作成され、そのディレクトリにファイルが保存されます。例えば、次のコードでは「lectureseries」アプリケーションのデフォルトのインスタンスに接続し、「lecture」というストリームを記録します。applications/lectureseries/streams/_definst_ ディレクトリに「lecture.flv」というファイルが記録されます。
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
次の例では、同じアプリケーションの「monday」インスタンスに接続します。/applications/lectureseries/streams/monday ディレクトリに lecture.flv というファイルが記録されます。
var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
パラメーター
name:String (default = null ) — ストリームを識別するストリングです。このストリームをサブスクライブしているクライアントは、NetStream.play() を呼び出す場合に、この同じ名前を渡します。ストリーム名の後にスラッシュ(/)を指定しないでください。たとえば、"bolero/" というストリーム名は使用しないでください。
次の表に示す形式でファイルを記録できます(
| |||||||||||||
type:String (default = null ) — ストリームのパブリッシュ方法を指定するストリングです。有効な値は、「record 」、「append 」、「appendWithGap 」および「live 」です。デフォルト値は "live " です。
|
関連する API エレメント
例 ( この例の使用方法 )
この例を実行するには、コンピューターに接続されているカメラが必要です。さらに、Button コンポーネントと Label コンポーネントをライブラリに追加する必要があります。
アプリケーションには、アプリケーションが正常にサーバーに接続された場合にのみ、ストリームをパブリッシュする(Flash Media Server に送信する)ボタンがあります。アプリケーションは、ストリームが正常にパブリッシュされた場合にのみ、サーバーから配信されたそのストリームを再生します。NetStatusEvent
は、これらのいずれかの場合を示す code
プロパティが指定された info
オブジェクトを返します。netStatusHandler
関数は、NetConnection クラスと NetStream クラスに関するこれらのイベントを処理します。
package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create the Video object to show the video on the stage video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; addChild(video_playback); // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Display the video that was published to FMS. video_playback.attachNetStream(ns_playback); ns_playback.play(videoURL); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
receiveAudio | () | メソッド |
public function receiveAudio(flag:Boolean):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ストリーム上で着信オーディオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play()
メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ボタンにこのメソッドをアタッチすると、ユーザーは音声のミュートとミュート解除を実行できます。このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes()
メソッドを使用する場合は機能しません。
パラメーター
flag:Boolean — ストリーム上で着信オーディオを再生するかどうかを指定します。再生する場合は true 、再生しない場合は false を指定します。デフォルト値は true です。指定したストリームに音声データのみが含まれる場合、false を渡すときに NetStream.time のインクリメントが停止されます。
|
receiveVideo | () | メソッド |
public function receiveVideo(flag:Boolean):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ストリーム上で着信ビデオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play()
メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ボタンにこのメソッドをアタッチすると、ユーザーはビデオの表示と非表示を実行できます。このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes()
メソッドを使用する場合は機能しません。
パラメーター
flag:Boolean — このストリーム上で着信ビデオを再生するかどうかを指定します。再生する場合は true 、再生しない場合は false を指定します。デフォルト値は true です。指定したストリームにビデオデータのみが含まれる場合、false を渡すときに NetStream.time のインクリメントが停止されます。
|
receiveVideoFPS | () | メソッド |
public function receiveVideoFPS(FPS:Number):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
着信ビデオのフレームレートを指定します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play()
メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ユーザーがビデオフレームレートを設定できるようにこのメソッドを呼び出します。現在のフレームレートを確認するには、NetStream.currentFPS
を使用します。ビデオの受信を停止するには、0
を渡します。
FPS パラメーターに値を渡してビデオのフレームレートを制限すると、Flash Media Server は、ビデオの完全性を維持する一方で、フレームを減らそうとします。2 つのキーフレームごとに、目的のレートを満たすために必要なフレームの最小数がサーバーから送信されます。I フレーム(または中間フレーム)を連続して送信する必要があります。そうしないと、ビデオは破損します。したがって、キーフレームに続いて、必要な数のフレームが直ちに連続的に送信されます。フレームは均等には配信されないので、待機により中断されたセグメントにおいてもモーションはスムーズに表示されます。
このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes()
メソッドを使用する場合は機能しません。
パラメーター
FPS:Number — 着信ビデオ再生時の 1 秒あたりのフレームレートを指定します。
|
resetDRMVouchers | () | メソッド |
public static function resetDRMVouchers():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
AIR アプリケーションでは、すべてのローカルでキャッシュされた DRM(デジタル著作権管理)のバウチャーデータを削除します。ブラウザーベースのアプリケーションでは、3322 エラーと、保護されたコンテンツ再生の設定パネルでのみ使用できます。
アプリケーションで、保護されたコンテンツにユーザーがアクセスできる media rights server から必要なバウチャーを再ダウンロードする必要があります。この関数の呼び出しは、DRMManager オブジェクトの resetDRMVouchers()
関数を呼び出すことと同じです。
例外
IOError — バウチャーデータを削除できません。
|
関連する API エレメント
例 ( この例の使用方法 )
NetStream.resetDRMVouchers();
resume | () | メソッド |
public function resume():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
再生を一時停止していたビデオストリームを再開します。ビデオが既に再生中である場合は、このメソッドを呼び出しても何も実行されません。
関連する API エレメント
seek | () | メソッド |
public function seek(offset:Number):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定された位置に最も近いキーフレーム(ビデオ業界では I フレームとも呼ばれます)をシークします。キーフレームは、ストリームの先頭から秒単位のオフセット位置に配置されます。
通常、ビデオストリームは、キーフレーム(または I フレーム)と P フレームの 2 種類のフレームでエンコードされます。キーフレームにはイメージ全体が格納されています。一方、P フレームは、キーフレーム間の追加のビデオ情報を提供する中間フレームです。通常、ビデオストリームには 10 ~ 50 フレームごとにキーフレームがあります。
Flash Media Server には、強化されたシークとスマートシークなど、各種のシーク動作が用意されています。
強化されたシーク
強化されたシークは、デフォルトで有効になっています。強化されたシークを無効にするには、Flash Media Server で Application.xml
構成ファイルの EnhancedSeek
要素を false
に設定します。
強化されたシークが有効になっている場合、サーバーは前のキーフレームとすべての中間 P フレームに基づいて、オフセット
位置に新しいキーフレームを生成します。ただし、キーフレームの生成によりサーバーの処理の負荷が高くなり、生成されるキーフレームに歪みが発生することがあります。ビデオコーデックが On2 の場合、シーク位置の前のキーフレームと、そのキーフレームとシーク位置の間にあるすべての P フレームがクライアントに送信されます。
強化されたシークが無効になっている場合、サーバーは一番近いキーフレームからストリーミングを開始します。例えば、ビデオ内の 0 秒と 10 秒の時点にキーフレームがあるとします。4 秒に対してシークを実行すると、0 秒のキーフレームを使用して 4 秒から再生が開始されます。10 秒の位置にある次のキーフレームに到達するまで、ビデオはフリーズされたままになります。シークの操作性を向上するには、キーフレームの間隔を短くする必要があります。通常のシークモードでは、キーフレーム間の位置からビデオを開始することはできません。
スマートシーク
スマートシークを有効にするには、NetStream.inBufferSeek
を true
に設定します。
スマートシークを使用すると、Flash Player で既存の巻き戻し用バッファーおよび早送り用バッファー内をシークできるようになります。スマートシークが無効になっている場合、seek()
が呼び出されるたびに、Flash Player ではバッファーがフ ッシュされ、サーバー内のデータが要求されます。詳しくは、NetStream.inBufferSeek
を参照してください。
データ生成モードのシーク
データ生成モードの NetStream に対して seek()
を呼び出すと、appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN
または appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK)
を呼び出してパーサーをリセットするまで、appendBytes()
に渡されるすべてのバイトが廃棄されます(バッファーに格納されず、部分的なメッセージ FIFO に累積されるか、シークポイントに対して解析されます)。データ生成モードについて詳しくは、NetStream.play()
を参照してください。
パラメーター
offset:Number — ビデオファイルにおける、再生ヘッドのおおよその移動時間(秒単位)です。Flash Media Server で、Application.xml 設定ファイルの <EnhancedSeek> が true に設定されている場合(これがデフォルトの設定です)、サーバーはオフセット にキーフレームを生成します。
|
関連する API エレメント
send | () | メソッド |
public function send(handlerName:String, ... arguments):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
パブリッシュされたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。このメソッドは、指定されたストリームの発行者だけが使用できます。このメソッドは、Flash Media Server にのみ使用できます。このメッセージを処理して応答するには、NetStream
オブジェクトにハンドラーを作成します。このオブジェクトの例には、ns.HandlerName
があります。
Flash Player または AIR は、メソッドやそれらのデータ、オブジェクトプロトタイプ変数、または列挙不可能な変数を直列化しません。表示オブジェクトの場合、Flash Player または AIR はパスを直列化しますが、データは直列化しません。
send()
メソッドを呼び出し、Flash Media Server にパブリッシュするライブストリームにデータキーフレームを追加できます。データキーフレームは、発行者がライブストリームに追加するメッセージです。通常、データキーフレームは、カメラやマイクロホンからストリーム用のデータをキャプチャする前に、ライブストリームにメタデータを追加するために使用されます。発行者は、ライブストリームのパブリッシュ中にいつでもデータキーフレームを追加できます。発行者がサーバーに接続している限り、データキーフレームはサーバーのメモリに保存されます。
データキーフレームが追加される前のライブストリームにサブスクライブしているクライアントは、データキーフレームが追加されるとすぐにそのキーフレームを受信します。データキーフレームが追加された後のライブストリームにサブスクライブしているクライアントは、サブスクライブするときにキーフレームを受信します。
Flash Media Server に送信するライブストリームにメタデータのキーフレームを追加するには、次の例に示すように、@setDataFrame
をハンドラー名として使用し、続いて 2 つの引数を指定します。
var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);
@setDataFrame
引数は、Flash Media Server に組み込まれている特別なハンドラーを表します。onMetaData
引数は、onMetaData
イベントを監視してメタデータを取得する、クライアントアプリケーションのコールバック関数の名前です。3 番目の metaData
は、メタデータ値を定義したプロパティを持つ Object
または Array
のインスタンスです。
@clearDataFrame
を使用して、ストリームに設定されているメタデータのキーフレームを消去します。
ns.send("@clearDataFrame", "onMetaData");
パラメーター
handlerName:String — 送信するメッセージです。メッセージを受け取る ActionScript ハンドラーの名前でもあります。ハンドラー名の深さは 1 レベルのみで(つまり、親子形式を取ることができません)、ストリームオブジェクトに相対します。ハンドラー名には予約語を使用しないでください。例えば、ハンドラー名として「close 」を使用すると、このメソッドは失敗します。Flash Media Server で、@setDataFrame を使用してメタデータのキーフレームをライブストリームに追加したり、@clearDataFrame を使用してキーフレームを削除したりします。
| |
... arguments — オプションのパラメーターで、任意のデータ型を指定できます。それらは直列化され、接続を介して送信されます。受信側のハンドラーは同じ順番でそれらを受け取ります。パラメーターが循環オブジェクト(循環するリンクされたリストなど)である場合、シリアライザは参照を正しく処理します。Flash Media Server で、@setDataFrame が最初の引数の場合、onMetaData を 2 番目の引数として使用します。3 番目の引数には、メタデータがプロパティとして設定された Object または Array のインスタンスを渡します。設定可能なプロパティ名のリストについては、Flash Media Server 開発者ガイドを参照してください。@clearDataFrame を最初の引数、onMetaData を 2 番目の引数として使用し、3 番目の引数はありません。
|
関連する API エレメント
例 ( この例の使用方法 )
NetStream
オブジェクトを作成します。1 つのオブジェクトはサーバーへのライブストリームのパブリッシュに使用し、もう 1 つはストリームへのサブスクライブに使用します。
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.client = new CustomClient(); vid.attachNetStream(ns2); ns2.play("dummy"); 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); } }
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() ); } }
onMetaData
イベントハンドラーを定義する必要があります。次の例では、onMetaData
イベントハンドラーは addEventListener()
に登録されていませんが、代わりに onMetaData
という名前のコールバック関数が登録されています。
public function onMetaData(info:Object):void { trace("width: " + info.width); trace("height: " + info.height); }
// 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);
//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);
setDRMAuthenticationCredentials | () | メソッド |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Lite 4 |
基になる暗号化コンテンツを表示するために必要な DRM 認証資格情報を設定します。
setDRMAuthenticationCredentials()
メソッドは、コンテンツプロバイダーまたはプロキシサーバーに知られていて承認されている資格情報に一致する資格情報を提供する必要があります。これらは、ユーザーがコンテンツの表示許可を取得するときに使用する資格情報と同じものです。
パラメーター
userName:String — 有効なユーザー名情報。
| |
password:String — 指定したユーザー名に対応するパスワード情報。
| |
type:String — 指定する認証資格情報のタイプを指定するストリング。 有効な値は "drm" と "proxy" です。 デフォルト値は "drm" です。
|
関連する API エレメント
step | () | メソッド |
public function step(frames:int):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
現在表示されているフレームに対して、指定された数のフレーム分、前後に進みます。前に進む場合は正の数、後ろに進む場合は負の数を指定します。このメソッドを呼び出して、正確かつ高速な早送りまたは巻き戻し機能を作成します。
注意:このメソッドは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
このメソッドは、データが Flash Media Server 3.5.3 以降からストリーミングされ、NetStream.inBufferSeek
が true
の場合にのみ使用可能です。さらに、ターゲットフレームがバッファーに格納されている必要があります。例えば、現在表示されているフレームがフレーム番号 120 で値 1000 を指定する場合、フレーム番号 1120 がバッファーにない場合、メソッドはエラーになります。
このメソッドは、pause()
メソッドまたは togglePause()
メソッドと共に使用されることを想定しています。再生中に、停止せずに 10 個のフレームを前または後ろに進めた場合、その操作に気付かないか、異常が発生しているかのように見えます。さらに、pause()
または togglePause
を呼び出したときにオーディオは出力されません。
NetStream.step()
の呼び出しが成功すると、info オブジェクトの code
プロパティの値として「NetStream.Step.Notify」が指定された NetStatusEvent が送信されます。
パラメーター
frames:int |
関連する API エレメント
togglePause | () | メソッド |
asyncError | イベント |
flash.events.AsyncErrorEvent
プロパティ AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。このイベントは、サーバーが定義されていないメソッドをクライアント上で呼び出したときに送出されます。
AsyncErrorEvent.ASYNC_ERROR
定数は、type
プロパティ(asyncError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | イベントを送出するオブジェクトです。 |
error | イベントをトリガーしたエラーです。 |
関連する API エレメント
drmAuthenticate | イベント |
flash.events.DRMAuthenticateEvent
プロパティ DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Lite 4 |
NetStream オブジェクトが、再生の前にユーザーの認証資格情報を要求する、DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
NetStream オブジェクトの setDRMAuthenticationCredentials()
メソッドを使用してユーザーを認証します。ユーザー認証に失敗した場合、認証が再試行され、NetStream オブジェクトの新しい DRMAuthenticateEvent イベントが送出されます。
DRMAuthenticateEvent.DRM_AUTHENTICATE
定数は、DRMAuthenticateEvent オブジェクトの type
プロパティの値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
authenticationType | 提供された資格情報が、Flash Media Rights Management Server(FMRMS)とプロキシサーバーのいずれの認証用なのかを示します。 |
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
header | サーバーによって提供される暗号化コンテンツファイルのヘッダーです。 |
netstream | このイベントを開始した NetStream オブジェクトです。 |
passwordPrompt | サーバーによって提供されるパスワード資格情報のプロンプトです。 |
target | NetStream オブジェクトです。 |
urlPrompt | サーバーによって提供される、表示する URL のプロンプトです。 |
usernamePrompt | サーバーによって提供されるユーザー名資格情報のプロンプトです。 |
関連する API エレメント
drmError | イベント |
flash.events.DRMErrorEvent
プロパティ DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
NetStream オブジェクトが DRM(デジタル著作権管理)で暗号化されたファイルを再生しようとして、DRM に関連したエラーを検出したときに送出されます。例えば、DRMErrorEvent オブジェクトは、ユーザー承認に失敗したときに送出されます。これは、ユーザーがコンテンツを表示する権利を購入していないためや、コンテンツプロバイダーが表示アプリケーションをサポートしていないためなどで発生します。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
DRMErrorEvent.DRM_ERROR
定数は、type
プロパティ(drmError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
errorID | 問題に割り当てられた数値のエラーコードです。 |
subErrorID | 基になるプログラムに関する詳細な情報を示すエラーコードです。 |
target | NetStream オブジェクトです。 |
関連する API エレメント
drmStatus | イベント |
flash.events.DRMStatusEvent
プロパティ DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
DRM(デジタル著作権管理)で暗号化されたコンテンツの再生が開始されるときに送出されます(ユーザーが認証されてコンテンツの再生が許可された場合)。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
DRMStatusEvent オブジェクトには、コンテンツがオフラインでも使用可能になっているか、またはバウチャーの期限が切れたときにコンテンツを表示できなくなるかなど、バウチャーに関連する情報が含まれています。
DRMStatusEvent.DRM_STATUS
定数は、type
プロパティ(drmStatus
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
detail | ステータスイベントのコンテキストを説明するストリングです。 |
isAnonymous | DRM 暗号化で保護されたコンテンツが認証資格情報をユーザーに要求することなく使用可能であるかどうかを示します。 |
isAvailableOffline | DRM 暗号化で保護されたコンテンツがオフラインで使用可能かどうかを示します。 |
offlineLeasePeriod | コンテンツをオフラインで表示できる残りの日数です。 |
policies | DRM ステータスイベントのカスタムオブジェクトです。 |
target | NetStream オブジェクトです。 |
voucherEndDate | バウチャーが期限切れとなり、ユーザーがコンテンツを表示できなくなる日の絶対日付です。 |
contentData | コンテンツの DRMContentData です。 |
voucher | コンテンツの DRMVoucher オブジェクトです。 |
isLocal | ローカルファイルシステムにコンテンツが保存されているかどうかを示します。 |
関連する API エレメント
ioError | イベント |
flash.events.IOErrorEvent
プロパティ IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
入出力エラーが発生してネットワーク処理が失敗したときに送出されます。
type
プロパティ(ioError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
errorID | 特定のエラーに関連付けられた参照番号です(AIR のみ)。 |
target | 入出力エラーが発生したネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
mediaTypeData | イベント |
flash.events.NetDataEvent
プロパティ NetDataEvent.type =
flash.events.NetDataEvent
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.3, AIR 2.7 |
ビデオコンテンツの再生時と、一部の種類のメッセージが処理されたときに送出されます。
NetDataEvent は次のメッセージのために送出されます。
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus(NetStream.Play.Complete コードの場合)
- onTextData
- onXMPData
注意:このイベントは、Android および Blackberry Tablet OS 上のブラウザー内の Flash Player で実行しているコンテンツ、または iOS 上の AIR で実行しているコンテンツからは送出されません。
netStatus | イベント |
flash.events.NetStatusEvent
プロパティ NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。netStatus
イベントには、info
プロパティが含まれます。このプロパティは、接続試行が成功したかどうかなど、イベントに関する特定の情報を含む情報オブジェクトです。
type
プロパティ(netStatus
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
info | オブジェクトのステータスまたはエラー状態を記述するプロパティを持つオブジェクトです。 |
target | そのステータスを報告する NetConnection または NetStream オブジェクトです。 |
関連する API エレメント
onCuePoint | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ビデオファイルの再生中に埋め込まれたキューポイントに達した場合に応答するリスナーを定義します。このリスナーを使用して、ビデオが特定のキューポイントに達したときにコード内のアクションをトリガーすることができます。これにより、アプリケーションの他のアクションとビデオ再生イベントと同期させることができます。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
onCuePoint
は実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onCuePoint
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
関連付けられたイベントリスナーは、NetStream.play()
メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。
次のタイプのキューポイントをビデオファイルに埋め込むことができます。
- ナビゲーションキューポイントは、ビデオファイル内のキーフレームと、その厳密に一致するキーフレームに対応するキューポイントの
time
プロパティを指定します。ナビゲーションキューポイントは、ビデオファイル内の移動に使用できるブックマークやエントリポイントとしてよく使われます。 - 時間を指定するイベントキューポイント。時間は、特定のキーフレームに対応していることも、対応していないこともあります。イベントキューポイントは、通常ビデオ内で何か処理が行われるときの時間を表し、他のアプリケーションイベントのトリガーに使用できます。
onCuePoint
イベントオブジェクトには、次のプロパティが含まれます。
プロパティ | 説明 |
---|---|
name | キューポイントがビデオファイル内に埋め込まれたときに、キューポイントに指定された名前です。 |
parameters | このキューポイントに指定された名前と値のペアのストリングの結合配列です。パラメーター名または値には、任意の有効なストリングを使用できます。 |
time | ビデオファイルの再生時にキューポイントが発生した時間(秒数)です。 |
type | 到達したキューポイントの種類です。ナビゲーションまたはイベントのいずれかです。 |
最初にビデオファイルをエンコードするとき、または Flash オーサリングツールでビデオの読み込みウィザードを使用してビデオクリップを読み込むときに、ビデオファイルにキューポイントを定義できます。
onMetaData
イベントも、ビデオファイル内のキューポイントに関する情報を取得します。ただし、onMetaData
イベントは、ビデオの再生が開始される前に、すべてのキューポイントに関する情報を取得します。onCuePoint
イベントは、1 つのキューポイントについて、再生時のそのキューポイントに指定された時間での情報を取得します。
一般に、コードで特定のキューポイントの発生時に応答するには、onCuePoint
イベントを使用して、コード内の特定のアクションをトリガーします。
onMetaData
イベントに指定されたキューポイントのリストを使用すると、ビデオストリームの事前に定義されたポイントでユーザーにビデオの再生を開始させることができます。キューポイントの time
プロパティの値を NetStream.seek()
メソッドに渡して、そのキューポイントからビデオを再生します。
例 ( この例の使用方法 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
関連する API エレメント
onDRMContentData | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.5, Flash Lite 4 |
AIR がメディアファイル内に埋め込まれた DRM コンテンツメタデータを抽出したときに応答するリスナーを定義します。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
DRMContentData オブジェクトには、DRM で保護されたメディアファイルの再生に求められるバウチャーを取得するために必要な情報が含まれています。DRMManager クラスを使用して、この情報でバウチャーをダウンロードします。
onDRMContentData
は NetStream.client
オブジェクトのプロパティです。このプロパティは、ローカルメディアファイルから埋め込みデータをプリロードするときにデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onDRMContentData
をイベントとして受け取ったり、処理したりすることはできません。代わりに、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかを直接アタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することや、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することは可能です。
関連する API エレメント
onImageData | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
再生中のメディアファイルにバイト配列として埋め込まれているイメージデータを Flash Player が受け取ったときに応答するリスナーを定義します。イメージデータは、JPEG、PNG または GIF のいずれかのコンテンツを作成できます。表示オブジェクトにバイト配列を読み込むには、flash.display.Loader.loadBytes()
メソッドを使用します。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
onImageData
は実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onImageData
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
関連付けられたイベントリスナーは、NetStream.play()
メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。
onImageData イベントオブジェクトは、イメージデータを AMF0 データチャンネルを介して送信されるバイト配列として格納します。
例 ( この例の使用方法 )
Netstream.client
プロパティを使用して、onTextData
および onImageData
のコールバック関数を処理しています。onImageDataHandler()
関数は、onImageData イベントオブジェクト imageData
を使用してバイト配列を格納します。また、onTextDataHandler()
関数は、onTextData イベントオブジェクト textData
を使用して複数のテキストデータを格納します(各データは、textData
オブジェクトのプロパティです)。
コード中の場所 yourURL
を、テキストまたはイメージメタデータを含むメディアファイルの実際の場所で置き換える必要があります。
カスタムクラスを使用してイメージデータやテキストデータを処理することもできます。詳細および例については、記事「Flash Video のメタデータおよびキューポイントの処理(英語)」を参照してください。
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 my_video:Video = new Video(); addChild(my_video); 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.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } 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]); } } } }
関連する API エレメント
onMetaData | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
再生中のビデオに埋め込まれた記述的情報を Flash Player が受け取ったときに応答するリスナーを定義します。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。
onMetaData
は実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client
プロパティを参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onMetaData
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することができます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
Flash Video Exporter ユーティリティ(バージョン 1.1 以降)は、ビデオの継続時間、作成日付、データレート、その他の情報をビデオファイルに埋め込みます。各ビデオエンコーダーは、それぞれ異なるメタデータのセットを埋め込みます。
関連付けられたイベントリスナーは、NetStream.play()
メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。
多くの場合、ストリームメタデータに埋め込まれた継続期間の値は実際の継続時間に近似したものになりますが、正確な値ではありません。つまり、再生ヘッドがビデオストリームの末尾にある場合、FLV メタデータに埋め込まれた継続期間の値は NetStream.time
プロパティの値と必ずしも一致するわけではありません。
onMetaData イベントハンドラーに渡されるイベントオブジェクトには、各データに 1 つのプロパティが含まれています。
例 ( この例の使用方法 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
関連する API エレメント
onPlayStatus | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream オブジェクトによるストリームの再生が終了した場合に応答するリスナーを定義します。関連付けられたイベントオブジェクトは、netStatus
イベントによって返される内容に加えて情報を提供します。このプロパティを使用すると、NetStream オブジェクトが再生リスト内のストリームを切り替えたとき(情報オブジェクト NetStream.Play.Switch
で示される)、または NetStream オブジェクトが終わりまで再生したときに(情報オブジェクト NetStream.Play.Complete
で示される)、コード内のアクションをトリガーできます。
onPlayStaus
は、実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onPlayStatus
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
このイベントでは、次のプロパティが指定された情報オブジェクトを返すことができます。
code プロパティ | level プロパティ | 説明 |
---|---|---|
NetStream.Play.Switch | status | サブスクライバが、再生リストでストリームを切り替えています。 |
NetStream.Play.Complete | status | 再生が終了しました。 |
NetStream.Play.TransitionComplete | status | ストリームのビットレートを切り替えた結果、サブスクライバは新しいストリームに切り替えています。 |
関連する API エレメント
onSeekPoint | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2, Flash Lite 4 |
シーク可能ポイントと見なされるポイント(例えば、ビデオキーフレーム)が付加バイトパーサーによって検出されたときに、appendBytes()
から同期的に呼び出されます。このイベントを使用して、シークポイントテーブルを作成できます。byteCount
は、シークポイントに対する解析可能なメッセージの最初のバイトの byteCount
に対応しています。前述のとおり、この値は 0 にリセットされます。シークするには、NetStream.Seek.Notify
イベントで、シーク可能ポイントから始まるバイトを見つけ、appendBytes(bytes)
を呼び出します。bytes
引数が、シーク可能ポイントから始まるバイトで構成される ByteArray
である場合は、ビデオはそのシークポイントから再生されます。
注意:このコールバック内からの appendBytes()
への呼び出しは無視されます。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
onSeekPoint
は NetStream.client
オブジェクトのプロパティです。このプロパティは appendBytes()
メソッドが受け取るデータに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client
プロパティを参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onSeekPoint
をイベントとして受け取ったり、処理したりすることはできません。onSeekPoint
を使用するには、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
関連する API エレメント
onTextData | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Flash Player が再生中のメディアファイルに埋め込まれたテキストデータを受信したときに応答するリスナーを定義します。テキストデータは UTF-8 形式で、3GP timed text 仕様に基づいて形式に関する情報を含めることができます。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
onTextData
は実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onTextData
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
関連付けられたイベントリスナーは、NetStream.play()
メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。
onTextData イベントオブジェクトには、テキストデータごとに 1 つのプロパティが含まれます。
例 ( この例の使用方法 )
Netstream.client
プロパティを使用して、onTextData
および onImageData
のコールバック関数を処理しています。onImageDataHandler()
関数は、onImageData イベントオブジェクト imageData
を使用してバイト配列を格納します。また、onTextDataHandler()
関数は、onTextData イベントオブジェクト textData
を使用して複数のテキストデータを格納します(各データは、textData
オブジェクトのプロパティです)。
コード中の場所 yourURL
を、テキストまたはイメージメタデータを含むメディアファイルの実際の場所で置き換える必要があります。
カスタムクラスを使用してイメージデータやテキストデータを処理することもできます。詳細および例については、記事「Flash Video のメタデータおよびキューポイントの処理(英語)」を参照してください。
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 my_video:Video = new Video(); addChild(my_video); 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.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } 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]); } } } }
関連する API エレメント
onXMPData | イベント |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
再生中のビデオに埋め込まれている Adobe Extensible Metadata Platform(XMP)独自の情報を Flash Player が受け取ったときに応答するリスナーを定義します。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
onXMPData
は実際は NetStream.client
オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client
プロパティを参照してください。addEventListener()
メソッドまたはその他の EventDispatcher メソッドを使用して、onMetaData
をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。
- Netstream インスタンスの
client
プロパティで参照されるオブジェクトです。 - Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
関連付けられたイベントリスナーは、NetStream.play()
メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。
onXMPData()
イベント処理機能に渡されるオブジェクトは、1 つのデータ
プロパティ(ストリング)を持ちます。このストリングは最上位の UUID ボックスから生成されます(最上位ボックスの 128 bit UUID は BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
)。この最上位 UUID ボックスには、null を持たない UTF-8 ストリングとして表される XML ドキュメントが 1 つだけ含まれます。
関連する API エレメント
status | イベント |
flash.events.StatusEvent
プロパティ StatusEvent.type =
flash.events.StatusEvent.STATUS
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
アプリケーションが NetStream.play()
メソッドを呼び出して DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。ステータスコードプロパティの値は "DRM.encryptedFLV"
です。
注意:このイベントは、AIR 3.0 for iOS の H.264 ビデオではサポートされていません。
type
プロパティ(status
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
code | オブジェクトのステータスの説明です。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
level | "status" 、"warning" 、"error" など、メッセージのカテゴリです。 |
target | そのステータスをレポートするオブジェクトです。 |
関連する API エレメント
CONNECT_TO_FMS | 定数 |
public static const CONNECT_TO_FMS:String = "connectToFMS"
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
NetStream インスタンスのコンストラクターに対するパラメーターとして使用される静的オブジェクト。これは NetStream コントラクタの 2 番目のパラメーターのデフォルト値です。アプリケーションが使用してメディアをプログレッシブ再生することはありません。このパラメーターを使用すると、コントラクタが Flash Media Server インスタンスに接続します。
DIRECT_CONNECTIONS | 定数 |
public static const DIRECT_CONNECTIONS:String = "directConnections"
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
ピアーツーピアーの発行者接続を作成します。2 番目の(オプション)パラメーターのこのストリングを、NetStream インスタンスのコンストラクターに渡します。アプリケーションはこのストリングを使用して、クライアントにオーディオおよびビデオをパブリッシュするための NetStream 接続を作成します。
この例では、Video オブジェクトと NetStream オブジェクトを作成し、Video.attachNetStream()
メソッドと NetStream.play()
メソッドを呼び出すコードがハンドラー関数に配置されます。ハンドラーは、NetConnection オブジェクトとの接続が成功した場合にのみ呼び出されます。つまり、netStatus
イベントが返す info
オブジェクトの code
プロパティが成功を示しているときです。接続に成功するまで待ってから、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 = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); 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 { addChild(video); var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); } } } 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); } }
mdata
オブジェクトを使用して video
ビデオインスタンスの幅と高さを設定しています。
//Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
Tue Jun 12 2018, 10:34 AM Z