2

AS3 でほぼシームレスなトランジションを使用して、プレイリストを動的に作成する必要があります。

.APPEND を指定して play2 コマンドを使用しようとしました。非動的設定でも機能します。しかし、私が持っているのはこれです。アプリケーションの起動時に、最初のビデオが何であるかを知っており、そのビデオが終了する前に、次に再生するビデオが何であるかを知っています。最後のビデオを再生しました。

そのため、最初は、ビデオがいくつあるかも、再生されるファイルの順序もわかりません。

ストリームが既に再生されているときに APPEND を使用してビデオを追加しようとすると、現在のビデオの最後でのみバッファリングと再生を開始するのではなく、現在再生中のビデオを置き換えているようです。

ビデオファイルはh.264形式でなければならないため、appendBytesも使用できません

もうどちらの方向を見ればよいかわからないので、誰の助けも大歓迎です。必要に応じて詳細をお知らせします。

どうもありがとうございました。

4

1 に答える 1

1

これは少し即席の答えですが、論理は健全であり、追求する別の方向性を提供するはずです.

まず、コンセプト: Flash ビデオでは、2 つの完全に別個のプロセスが同時に発生します。

  1. バッファリング / ロード

  2. 再生中のビデオ

したがって、再生とストリーミングは同時に発生する可能性がありますが、別々に発生する可能性があり、そこにロジックを接続する必要があります。

したがって、実装については、プライマリ プレーヤーと、セカンダリ (シャドウ) プレーヤー / ローダーを用意することになります。プライマリ プレーヤーは、最初のビデオの読み込みと再生を担当する必要があります。

[そしてここに魔法がやってくる]

プライマリ プレーヤーでのバッファリングが完了すると、NetStream オブジェクトの NetStream.Buffer.Flush NetStatusEvent によって決定されます。次に、シャドウ プレーヤーで次のビデオのバッファリングを開始し、接続を初期化し、NetStream.Pause を使用してバッファリングを開始しますが、プライマリ プレーヤーの再生中に再生は開始しません。

プライマリ プレーヤーで再生が完了すると (NetStream.Play.Stop イベントによって決定されます)、変数 (NetConnention、NetStream & Video) (常に参照によって渡されます) をシャドウ プレーヤーからプライマリ プレーヤーに渡すことができ、続行する必要があります。ほぼシームレスに。次に、シャドウ プレーヤーから値をクリアして上記のプロセスを繰り返し、次のビデオをロードする前にバッファリングが完了するのを待ちます。無限に。

または、よりバランスの取れたアプローチをとることもできます-私の考えでは、これはより多くのリソースを消費しますが (2 つのビデオ プレーヤーが継続的にアクティブになるため)、プライマリ プレーヤーとセカンダリ プレーヤーが交互に配置されます。1 つのバッファが完了するとすぐに、次のバッファリングを開始し、再生が完了するとすぐに、1 つのプレーヤーから別のプレーヤーに切り替えます。

これを組み立てるのは非常に面倒です (したがって、複雑であり、本質的にはあなたの仕事であるため、例がありません ;) 2 セットの NetConnections、NetStreams & Videos を扱うことになるため、開始するのは複雑です。で、処理が必要な多くのイベント...

しかし、私はここで play2() があなたの答えだとは思わない。ここで直面する問題は、2 つの別個の NetConnection と NetStream のシームレスな非同期化です。

ここでまだ支援/説明が必要な場合は、私に連絡してください。これは少し古い Q です。既に先に進んでいる場合は、数百行のコードを書きたくありません...

ベスト、a.)

于 2012-09-23T12:30:13.970 に答える