Problemy z MediaExtractor

Próbuję uzyskać określone klatki w określonym czasie jako obrazy z filmu przy użyciuMediaExtractor iMediaCodec. Mogę to zrobić z powodzeniem, jeśli:

używamextractor.seekTo(time, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); jednak to daje tylko najbliższej ramce synchronizacji nie ramkę docelową.Wyciągam sekwencyjnie wszystkie ramki za pomocąextractor.advance(); , ale muszę nie dopuścić do ramki docelowej.

Próbuję więc:

extractor.seekTo(time, MediaExtractor.SEEK_TO_PREVIOUS_SYNC);
while(extractor.getSampleTime()<time /*target time*/) extractor.advance();

Zapewnia to poprawną ramkę, ale z jakiegoś powodu obraz jest uszkodzony. Wygląda to jak poprawny obraz (ten, który otrzymałem z udanych przypadków), ale z pewną pikselacją i dziwną mgiełką.

Thewhile-loop jest jedyną rzeczą, która różni się między przypadkami zakończonymi sukcesem a przypadkami uszkodzonymi. Co zrobić, aby awansowaćMediaExtractor do określonego czasu (nie tylko czasu synchronizacji) bez uzyskania uszkodzonego obrazu?

questionAnswers(1)

yourAnswerToTheQuestion