VideoView SeekTo работает плавно или с задержкой на разных устройствах - Android
Я разрабатываю функцию, при которой я нажимаю кнопку "Далее", после чего видео паузы будет искать следующую часть и запускаться. Например, когда video.getCurrentPosition равно 8000, я нажимаю кнопку, чтобы выполнить поиск видео (10000), поскольку видео показывает тот же контент между 8000 и 10000.
Эта функция на некоторых устройствах Android работает гладко, например, Samsung s6 edge,OnePlus,Xiaomi,Smartison
...
Но проблема в том, что на некоторых устройствах, таких как Huawei,Moto Nexus 6, когда видео на 8000 и я нажимаю кнопку, оно имеет некоторое "delay time
". Похоже, примерно через 1сек., Наконец, видео начинается.
В отличие от этого, я специально изменяю seekto(10200), который является неправильным параметром, и эти "проблемные устройства" работают без сбоев, как "обычные устройства".normal devices
msgstr "пропустить кадр и начать с 10200.
Кто-нибудь знает, почему причиной этой проблемы? Надеюсь, что ваш ответ, спасибо.
1 ответ
Было ли видео закодировано с использованием h264
? Перекодирование как использование mpeg4
Кодек, как предложено в комментарии к такому вопросу, решил для меня очень странную проблему. seekTo
поведение Android ViewView
,
Чтобы проверить кодировку и перекодировать, вы можете использовать ffmpeg
,
$ ffprobe <inputfile>
...
...
Stream #0:0(eng): Video: h264 ...
...
Это показал, что файл закодирован с использованием h264
, который является более поздним и обычно производит лучшее качество для того же mpeg4
, но (предположительно как следствие) труднее искать, по крайней мере для Android VideoView
,
Кодировать как mpeg4
следующее сработало для меня, но ffmpeg
В вики есть больше деталей.
$ ffmpeg -i <inputfile> -c:v libxvid <outputfile>