Я использую videoview для отображения следующего видео https://ellovidsout.s3.amazonaws.com/877/9/1421668953.mp4.m3u8
В конце видео я проверяю getCurrentPosition()
против getDuration()
.
Текущее положение 219418.0. Пока getDuration
возвращает 205000.0.
Таким образом, продолжительность составляет 14 секунд меньше реальной длины. Это также происходит с моим другим видео.VideoView.getDuration возвращает неправильное значение;
ответ
Метод getDuration() VideoView вычисляет продолжительность в соответствии с длительностью , которая объявлена в манифесте .m3u8 для каждого файла .ts.
Таким образом, если декларация неточна, разница между getDuration() и фактической продолжительностью будет наблюдаться с помощью getCurrentPosition().
Файл примера .m3u8 на самом деле представляет собой «манифест списка воспроизведения», который ссылается на 3 различных манифеста потока .m3u8 (выбранных по полосе пропускания), поэтому, если мы посмотрим на один из проявлений потока, на который это ссылается, это будет выглядеть это:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:11
#EXTINF:10.880000,
1000k_1421668953.mp400000.ts
#EXTINF:10.800000,
1000k_1421668953.mp400001.ts
#EXTINF:10.800000,
1000k_1421668953.mp400002.ts
#EXTINF:10.800000,
1000k_1421668953.mp400003.ts
#EXTINF:7.200000,
1000k_1421668953.mp400004.ts
#EXTINF:10.800000,
1000k_1421668953.mp400005.ts
...
«#EXTINF: 10,880000» над каждой ссылке .ts это объявление продолжительность .ts, который используется getDuration(), чтобы подвести общую продолжительность видео.
Кстати, когда я запускал свой код с этим видео, продолжительность, которую я получил с помощью getDuration(), была фактически 199330, что немного отличается от того, что вы наблюдали тогда. Но это как раз сумма всех деклараций продолжительности.
- 1. videoview.getDuration() возвращает -1
- 2. getLeft() возвращает неправильное значение
- 3. UITabBarController.selectedIndex возвращает неправильное значение
- 4. malloc_size возвращает неправильное значение
- 5. File.Exist() возвращает неправильное значение
- 6. AsyncStorage возвращает неправильное значение
- 7. Getter возвращает неправильное значение
- 8. getJSONObject возвращает неправильное значение
- 9. string.equals() возвращает неправильное значение?
- 10. JOptionPane.showOptionDialog возвращает неправильное значение?
- 11. getrlimit() возвращает неправильное значение?
- 12. DateTime.ParseExact Возвращает неправильное значение
- 13. e.offsetWidth возвращает неправильное значение
- 14. getAdapterPosition возвращает неправильное значение?
- 15. Оператор возвращает неправильное значение?
- 16. ArrayList возвращает неправильное значение
- 17. date_create_from_format() возвращает неправильное значение.
- 18. base_url() возвращает неправильное значение
- 19. PDO возвращает неправильное значение
- 20. Math.log возвращает неправильное значение
- 21. CL_DEVICE_GLOBAL_MEM_SIZE возвращает неправильное значение
- 22. HashMap.containKey возвращает неправильное значение
- 23. measureSpec возвращает неправильное значение
- 24. ArrayField возвращает неправильное значение
- 25. enum.ToString возвращает неправильное значение?
- 26. GWT.getModuleBaseURL() возвращает неправильное значение
- 27. this.style.background возвращает неправильное значение
- 28. MyApplication возвращает неправильное значение
- 29. ExecuteScalar возвращает неправильное значение
- 30. ROLLUP возвращает неправильное значение