MediaExtractor
と を使用して、特定の時間に特定のフレームを映画から画像として取得しようとしていますMediaCodec
。次の場合、正常に実行できます。
- 私は を使用
extractor.seekTo(time, MediaExtractor.SEEK_TO_PREVIOUS_SYNC);
しますが、これはターゲット フレームではなく、最も近い同期フレームのみを提供します。 - を使用してすべてのフレームを順次抽出します
extractor.advance();
が、すべてではなくターゲット フレームを取得する必要があります。
だから、私は次のことを試します:
extractor.seekTo(time, MediaExtractor.SEEK_TO_PREVIOUS_SYNC);
while(extractor.getSampleTime()<time /*target time*/) extractor.advance();
これにより正しいフレームが提供されますが、何らかの理由で画像が破損しています。それは正しい画像 (私が成功したケースから得たもの) のように見えますが、ピクセル化と奇妙なかすみがあります。
成功したケースと破損したケースで異なるのwhile-loop
は、これだけです。MediaExtractor
破損したイメージを取得せずに特定の時間 (同期時間だけでなく)に進むにはどうすればよいですか?