4

私は私のような多くの同様の質問を見てきましたが、c/c ++ではなくJavaでこれを行う必要がある1つの違いがあり、Androidデバイスで動作する必要があります.

「MediaMetadataRetriever」でそれを行う方法が1つ見つかりました。

しかし、フレームを分離するのに時間がかかりすぎて(フレームに約1秒)、600フレームのように読み取る必要があるため、画像処理なしで画像を読み取るだけで10分かかります。

ビデオからフレームを分割する別の方法があるかどうか、または MediaMetadataRetriever を操作して高速に動作させる方法があるかどうかを知りたいです。

どうもありがとう!

4

1 に答える 1

3

MediaCodecデコーダーを使いたいようです。ここにいくつかの例があります。

特に、DecodeEditEncodeTest コードを見ると、checkVideoFile()関数は以前に作成されたストリームを外部テクスチャにデコードし、OpenGL ES で操作します。(.mp4 ファイルからこれを行うには、.mp4 経由でアクセスする必要がありますMediaExtractor。)

MediaMetadataRetriever#getFrameAtTime()サムネイルを抽出するためのものであり、多数のフレームを抽出するのには特に適していません。

更新:、、および GLES (API 16+)を使用してビデオ フレームを抽出するためのサンプル コードが追加されました。MediaExtractorMediaCodec

于 2013-10-23T18:03:14.403 に答える