Intereting Posts
Расширенная панель инструментов с пользовательским представлением, не отображаемым с полной шириной Реагировать на собственный андроид не удалось загрузить пакет JS AlarmManager запускает PendingIntent слишком рано Скрытие заголовка / панели уведомлений, когда устройство ориентировано на пейзаж Стиль кода Android в Intellij Idea / Android Studio Как отобразить действие ActionBarCompat как диалог, устанавливающий его тему в AndroidManifest.xml? PendingIntents поддерживают кеширование одного и того же объекта Как разрешить только моему приложению доступ к firebase без входа? Как отобразить список ресурсных ресурсов Android RatingBar показывает более 5 звезд Android: битмапы, загруженные из галереи, поворачиваются в ImageView После обновления до google play services 8.4.0 мое приложение падает при запуске Ограничьте drawableLeft и высоту drawableRight до высоты TextView Приемник режима полета в манифесте? Невозможно десериализовать экземпляр объекта из токена START_ARRAY весной 3 REST Webservice

Неправильные временные метки представления при обратном просмотре через видео 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 ( SEEK_TO_PREVIOUS_SYNC ) и предоставит этот ошибочный latestTimestampValue для всех ключевых кадров.

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