1

Flash CS5 と Actionscript 3 で基本的なビデオ プレーヤーを作成しています。この基本的なプレーヤーでは、NetStream を NetConnection に接続し、ストリームの .play() メソッドを呼び出して読み込みを開始します。メタデータとストリームのバッファリングを開始したいのですが、すぐに再生を開始したくないので、すぐにストリームの .pause() メソッドを呼び出します。残念ながら、すぐに一時停止すると、ストリームのクライアントの onMetaData イベントが常に呼び出されるとは限らないため、ロードされたビデオの合計再生時間を取得できるとは限りません。

回避策として、「一時停止」メソッドの呼び出しを onMetaData リスナー内に配置しましたが、メタデータを受信する前に動画が少し再生され、再生されるまで再生が継続されることがあります。

ストリームの再生を停止し、ビデオ メタデータを取得する良い方法はありますか?

4

2 に答える 2

1

わかりました、これを別の方法で考えるためのすてきな方法があります... ビデオ オブジェクトをすぐにストリーム オブジェクトにアタッチしないでください。ビデオ オブジェクトを表示せずに、「しばらくお待ちください」というビジュアルを表示しながら、ストリームの再生を開始します。onMetaData リスナーで、以前に期間を保存したことがあるかどうかを確認します。そうでない場合は、これが onMetaData への最初の呼び出しであると想定し、期間を保存し、再生を一時停止し、ストリームを 0 にシークし、ビデオ オブジェクトをアタッチします。

ユーザーに「しばらくお待ちください」というメッセージが表示された後、ビデオが表示され、一時停止され、期待どおりの再生時間で再生できるようになります。ユーザーは、待機中にストリームが少し順方向に再生されたことにまったく気づきません。

于 2010-09-30T13:49:22.283 に答える
1

NetStatusEvent.STATUSイベントが発生したときに一時停止を呼び出す必要がありますNetStream.Play.Start

アップデート:

非常に短いストリーム (例: buffer> duration)NetStream.Play.Startの場合、コールバックの直前に発生する可能性がありonMetaDataます。

で一時停止する前にNetStream.Play.Start、metaData が提供されているかどうかを確認します。提供されていない場合は、onMetaDataすぐに一時停止せず、一時停止するのを待ちます (たとえば、フラグを設定するだけですpauseOnMetaData = true)。

于 2010-09-30T04:48:59.427 に答える