Problemas com o MediaExtractor

Estou tentando obter quadros específicos em momentos específicos como imagens de um filme usandoMediaExtractor eMediaCodec. Eu posso fazer isso com sucesso se:

eu usoextractor.seekTo(time, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); no entanto, isso fornece apenas o quadro de sincronização mais próximo e não o quadro de destino.Eu extraio seqüencialmente todos os quadros usandoextractor.advance(); , mas preciso obter o quadro de destino nem todos.

Então, eu tento o seguinte:

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

Isso fornece o quadro correto, mas por algum motivo a imagem está corrompida. Parece a imagem correta (a que recebo dos casos de sucesso), mas com alguma pixelização e uma névoa estranha.

owhile-loop é a única coisa que é diferente entre os casos de sucesso e os corrompidos. O que fazer para avançarMediaExtractor em um horário específico (não apenas no horário de sincronização) sem obter uma imagem corrompida?

questionAnswers(1)

yourAnswerToTheQuestion