3

AS3 プロジェクトでビデオ (H264) を再生しています。特別な理由から、特定のポジションに行きたいと思っています。

a) NetStream.seek() で試してみます。そこでは、キーフレームにのみ移動します。私の現在の設定では、これは 1 秒ごとに位置を見つけることができることを意味します。(より良い解像度のために、私はできるだけ多くのキーフレーム、別名すべてのフレームをキーフレームで映画をエンコードする必要があります)

  • すべてのビデオを再エンコードしたくないので、これは明らかに私のお気に入りの方法ではありません。

b) NetStream.step() で試してみます。これにより、フレームからフレームへとゆっくりと進むことができます。しかし、ドキュメントには次のように書かれています:

このメソッドは、データが Flash Media Server 3.5.3 以降からストリーミングされ、NetStream.inBufferSeek が true の場合にのみ使用できます。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#step ()

これは、Air for Desktop ではできないということですか? 試してみると、何も機能しません。

この問題を解決する方法はありますか?

ご挨拶&ありがとうございます!ニコラス

4

3 に答える 3

1

Flash Player 9はスクラブが素晴らしくスムーズであることに気づきましたが、10以上のプレーヤーではスクラブの問題は発生しません。

私の修正は、seek関数への呼び出しの頻度を200ms未満に制限することでした。これはスクラブを修正しましたが、プレーヤー9ほどスムーズではありません。おそらく「フラッシュビデオは数秒でしか進められない」という制限のためですか?タイマーを使用して、ビデオのseek()を呼び出す関数をティガーしました。

    private var scrubInterval:Timer = new Timer(200);

    private function  videoScrubberTouch():void {
        _ns.pause();

        var bounds:Rectangle = new Rectangle(0,0,340,0);

        scrubInterval.addEventListener(TimerEvent.TIMER, scrubTimeline);
        scrubInterval.start();

        videoThumb.startDrag(false, bounds);


    }
    private function  scrubTimeline(e:TimerEvent):void {
        var amt:Number = Math.floor((videoThumb.x / 340) * duration);
        trace("SCRUB duration: "+duration+" videoThumb.x: "+videoThumb.x+" amt "+amt);

        _ns.seek(amt);

    }
于 2013-01-22T20:12:29.820 に答える
1

Flash Media Server がビデオをホストしていない限り、Flash ビデオは秒単位でしか進められません。技術的には、これは Air で意図したとおりに動作させることができることを意味しますが、ビデオはストリーミングする必要があります (愚かな adobe...)。

次の 2 つのオプションがあります。

1)映像をムービークリップとしてインポートします。Flash IDE にはこのためのウィザードがあり、FlashIDE 以外の環境だけで開発している場合は、変換して SWF や SWC などの外部アセットとしてエクスポートできます。これは、ムービークリップのフレームごとのステップ実行可能なメソッドにアクセスできるように、アプリに埋め込まれたり、実行時にロードされたりします。ただし、これにはいくつかのオーディオ同期の問題 (iirc) が伴います。また、後方へのスクラブは MC の得意分野ではありません。

2)画像シーケンスを読み込み、各フレームを順番に表示する独自のビデオ オブジェクトを記述します。独自のオーディオ同期機能をセットアップする必要がありますが、FLVComponent や NetStream を除けば、それが最も直接的なソリューションになる可能性があります。

于 2012-02-28T22:22:37.970 に答える