Подтвердить что ты не робот

Неправильные временные метки представления при обратном просмотре через видео MP4

Я использую MediaCodec и MediaExtractor для воспроизведения видео с переменной скоростью, как вперед, так и назад. Код использует что-то вроде SpeedControlCallback, чтобы установить межкадровые паузы - подав ему поле presentationTimeUs из выходных буферов.

Это работает отлично, в 99% случаев, однако, похоже, что кодек AVC на Samsung S6 обеспечивает неправильное время представления при обратном обращении - они закреплены на любом самом высоком значении, когда ища вперед, если это имеет смысл. Данные в буферах правильны/меняются - это просто не соответствует фиксированному времени представления.

S6 может обрабатывать обратные запросы в файлах MP4 с маркой /ftype avc1, но другое видео H.264, которое я пробовал (mp42, isom), не работает 100% время. Эти же файлы отлично работают на Samsung S5 и на всех других устройствах, которые я пробовал.

Кодек регистрирует это:

09-15 11:16:21.611 2992-16618/? W/EXYNOS_VIDEO_DEC﹕ sCurrentTimestamp(6002033) is smaller than latestTimeStamp(7001744), uses latestTimeStamp

В каждом обратном запросе (SEEK_TO_PREVIOUS_SYNC) и обеспечит этот ошибочный latestTimestampValue для всех ключевых кадров.

Кто-нибудь сталкивался с аналогичной проблемой с кодеком AVC на Galaxy S6 или может предложить любые (не хакеры) решения?

4b9b3361