0

ミリ秒の範囲で再生ヘッドの更新のイベントをキャッチするのに問題があります。これは、読み込まれた flv ムービーの FLV 再生に関するものです。ドキュメントによると、 seek() 関数はキーフレームをシークしますが、ミリ秒の精度で入力として時間がかかります。次のフレームと呼ばれる関数があり、ビデオを一時停止して、指定された playheadTime をシークしようとします

    function onNextFrame(event:Event)
    {
        if (video1.playing)
        {
            video1.stop();
        }
        playHeadTime=Number(playHeadTime.toFixed(2));
        trace("Calling nextFrame :::",playHeadTime);
        trace(" Before seek ",video1.playheadTime);
        video1.seek(playHeadTime);
        playHeadTime +=  0.1;
    }

また、シークごとに更新されるのではなく、flv ビデオでキー フレームが発生したときにのみ更新されるシーク イベントもあります。

function onseeked(event:Event)
        {
            trace("seeked",video1.playheadTime);
        }

再生ヘッドの動きを追跡するための再生ヘッド更新イベントもありますが、これは次のフレーム機能を使用しても更新されません。ビデオが正常に再生されている場合にのみ機能します。

video1.playheadUpdateInterval = 30;
video1.seekToPrevOffset = 0.01;
video1.addEventListener(VideoEvent.SEEKED,onseeked);
video1.addEventListener(VideoEvent.PLAYHEAD_UPDATE,onPlayHeadUpdate);
function onseeked(event:Event)
        {
            trace("seeked",video1.playheadTime);
        }

私の質問は

  • ビデオが一時停止/停止され、時間までシークされたときに、再生ヘッドをミリ秒の精度で更新するにはどうすればよいですか。
  • シークがキーフレームに対してのみ機能しているように見える場合、最初に再生ヘッドを更新するにはどうすればよいですか。非キーフレーム時間へのシークを取得するにはどうすればよいですか?

これに関する関連する議論ですが、解決策も提供していません

flv プレーヤーで非キーフレームにジャンプする方法


更新: netstream.seek() を使用しても、関数を連続して呼び出すたびに、video.playheadtime の変化は表示されません。これは、video.seek() と同じように機能します。

video.playheadtime=0.1

この種の割り当ても、再生ヘッドのプロパティを変更/更新する際には機能しません。

早送り/早戻しアクションを実現するにはどうすればよいですか?

4

1 に答える 1

0

flvメタデータcanseekontime = false
も持っているかどうかを確認NetStream.seek(12.222/*milliseconds/1000*/)します同じflvで機能するかどうかを確認します

于 2011-03-23T12:07:07.780 に答える