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破損したイメージを取得せずに特定の時間 (同期時間だけでなく)に進むにはどうすればよいですか?