0

再生中のビデオフレームのスクリーンショットを撮ることを扱った投稿をいくつか見ました。ビデオを逆方向に再生し、通常は一度に1フレームずつ移動する方法を探しています。理想的には、特定のiフレームの前後のフラッシュビデオからフレームを抽出できると思います。

この質問で最も重要なのは、実際にビデオを再生せずにフレームを抽出する機能です。私がSOで見つけたすべてのソリューションでは、ビデオを再生する必要があり、基本的には画面をビットマップに印刷するだけです。

actionscriptで個々のビデオフレームを抽出して、単一フレームを前方と後方の両方に進めることができますか?

4

3 に答える 3

1

最初にコンテンツをプレイしない限り、方法はないと思います。しかし...ナビゲートするビットマップの大きな配列が1つになるまで、ストリーミングされたビデオ(必ずしも表示リストにあるとは限りません)が再生されるときに、各フレームを連続してbitmapdata.drawすることができます。これには 2 つの大きな問題があります。

1 つは、明らかに、既に再生されたフレームにしかアクセスできないことです。これは、アプリで発生しているその他の状況によって対処される可能性があります。たとえば、動画のストリーミング中またはキャプチャ中に、ユーザーが紹介コンテンツと対話しているとします。

もう 1 つの、おそらく克服できない問題は、メモリに関するものです。コンテンツをストリーミングする理由は、常にメモリ内に flv の 24 MB (またはそれ以外) をすべて保持しないようにするためです。このタイプのシナリオは、そうしなければならないことを意味します。そうは言っても、フレームのサイズ/数によっては、これはそれほど大きな問題ではないかもしれません。

率直に言って、このルートを選択する場合は、ビデオを Flash 以外のフレーム (アフター エフェクトまたはプレミア) に分割し、swf で埋め込む (または個別にロードする) 方がよいでしょう。とにかく、圧縮をより適切に制御できることを意味します。

多分それは役立ちますか?

于 2011-04-06T17:41:04.050 に答える
0

キーフレーム間隔1でビデオファイルをエンコードする場合(つまり、すべてのフレームがキーフレームである場合)、ビデオを逆方向にナビゲートしても問題はありません。これによりファイルのサイズが大きくなりますが、再生時に任意のフレームに即座にジャンプする可能性があります。

于 2011-08-31T12:12:22.563 に答える
0

パーツの組み合わせがややこしいですが…

フレームの配列をキャプチャする機能:

bitmapData.draw(video);

ビデオを再生しなくても:

netStream.pause();

次に逆再生します。

netStream.step(-1);

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

于 2011-04-06T22:17:12.217 に答える