2009-07-03 6 views
4

NetStreamを使用してhttpからコンテンツをストリーミングすると、特定のエクスポートされたh264が存在することに気づきました(空のバッファが見つかると、要求された長さに停止してバッファリングされます)。Actionscript:バッファリング後のNetStream stutters

一度バッファがいっぱいになると、再生が再開されずにすぐに先にジャンプし、一時的にバッファされた時間を再生し、再び空のバッファをトリガします。オーバー。

おそらく、ネットストリームが一時停止して再生ヘッドの位置が継続し、プレイヤーが再開時にその位置にスナップしようとしているとしますが、2秒のバッファを作成するのに5秒かかります。私は、空のバッファをnetStatusイベントを受け取るストリームを一時停止し、同時にチェックするループを設定することによってこの問題を回避しようとしてきました

(これは仮定である)。..再び

をバッファ現在のバッファの長さと要求されたバッファの長さを比較し、バッファの長さが要求されたバッファよりも大きければ再開します。しかし、これは、 eビデオは残っています..例えば5秒しか残っていない10秒間のバッファーの場合、5秒間放置すると10秒間バッファーを待ってループします。

あなたは、小さい方、残っている時間、要求されたバッファの長さなどを確認してください。ただし、フラッシュの時間は正確ではありません。

ネットストリームの現在の時間インデックスにバッファリングされた時間を加算すると、映画の長さ(最後にあるとき)..それは近いが同じではない。

これは元の問題に戻ってきます。これを修正する別の方法がある場合は、バッファが準備されていることを明確に知っているので、バッファがあればフラッシュを一時停止し、 ?現在はそれはしません。一時停止し、バッファがいっぱいになると、約0.1秒でバッファされたコンテンツ全体が再生されます。

ありがとうございます。 Stephen。

答えて

4

よしも、周りの検索たくさんの(うわー、それはこの問題を記述するためにどのように難しいです)..私は問題は低帯域幅に関連してさらに推測し、多くの人がこのシナリオをテストしないことがあり...

とにかく、この問題を経験している人は、コーデックの設定に依存しているようです。おそらく、キーフレームやストリーミングのヒントがどのように働くのでしょうか。私は分かりません。私が知っている何

が、これはプレイヤーに懸念すべきではないです、フラッシュはまだ再び巨大な..

失望しかし、あなたならば、私は、この問題を解決するためのハックを作るために管理したのとなりnetstatusイベントを聞き、空のバッファイベントを待つと、ストリームを一時停止します。理想的には、バッファフルイベントをリスンして再開しますが、ストリームが一時停止しているのでバッファは構築されませんもちろん、動画はまだ読み込まれています)。

あなたは今(私が入力したフレームにイベントを設定)、タイマーを設定し、真なるために2つの条件のいずれかに耳を傾けた場合:

  • a)は、bufferLengthが 以上bufferTimeにに等しく、ロードされたバイトは は総バイト数が

条件Aが十分BECないカウントに等しいカウント)

  • B(実際 バッファは、少なくとも要求されたバッファ サイズです)ビデオの終わりに使用すると、bufferLengthは、残りの時間がより少なく、現在の再生ヘッド位置+現在のバッファ長のチェックがムービーの長さと等しくないため、要求されたバッファサイズに適合できない場合がありますこれが条件Bが必要な理由です。実際のムービーが完全にロードされていることを確認し、そのように再生できます。

    は、ここですべての有用な場合は誰にも私のコードです:

    function onNetStatus(e:NetStatusEvent):void 
    
        if (e.info.code == "NetStream.Buffer.Empty") { 
    
         ns.pause(); 
    
         playerRoot.addEventListener(Event.ENTER_FRAME, function() { 
          if (ns.bufferLength >= ns.bufferTime || ns.bytesLoaded == ns.bytesTotal) { 
           playerRoot.removeEventListener(Event.ENTER_FRAME, arguments.callee); 
           ns.resume(); 
          } 
         }); 
        } 
    } 
    

    乾杯。

  • 0

    私は決してあなたが説明した問題に遭遇しました。それはすべてのビデオで起こりますか?

    同じ問題が発生しているかどうかを確認するために、JW Playerでビデオをストリーミングしてみてください(http://www.longtailvideo.com/players/jw-flv-player/)。これはAS3で構築されたオープンソースの動画プレーヤーです。

    +0

    こんにちはデビッド、それはすべてのビデオで起こることはありません - おそらくそのエンコーディングの問題..これは悪夢です。これはcamtasiaのh264、毎秒のキーフレームからエンコードされています。私はそれを見つけたら、いくつかの異なる輸出を試みて問題を釘付けにしようと思います。ありがとう – meandmycode

    関連する問題