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:
extractor.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?