我使用videoview來顯示下面的視頻https://ellovidsout.s3.amazonaws.com/877/9/1421668953.mp4.m3u8
在視頻的最後我檢查getCurrentPosition()
vs getDuration()
。
當前位置是219418.0。而getDuration
返回205000.0。
所以持續時間比實際長度少14秒。我的其他視頻也會發生這種情況。VideoView.getDuration返回錯誤的值;
0
A
回答
0
VideoView的getDuration()方法根據每個.ts文件的.m3u8清單中聲明的持續時間計算持續時間。
因此,如果聲明不準確,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鏈路是用於通過getDuration的.TS持續時間聲明()來總結影片總長度。
順便說一句,當我用這個視頻運行我的代碼時,我使用getDuration()得到的持續時間實際上是199330,這與您當時觀察到的略有不同。但這正是所有持續時間聲明的總和。
相關問題
- 1. videoview.getDuration()返回-1
- 2. 錯誤返回值
- 3. 錯誤返回值
- 4. 返回錯誤值
- 5. 值返回錯誤值
- 6. getrlimit()返回錯誤的值?
- 7. iterator.hasNext()返回錯誤的值
- 8. PDO返回錯誤的值
- 9. page.Y返回錯誤的值
- 10. WebSecurity.UserExists()返回錯誤的值
- 11. DateTime.ParseExact返回錯誤的值
- 12. getLeft()返回錯誤的值
- 13. glReadPixels返回錯誤的值
- 14. objc_getAssociatedObject返回錯誤的值
- 15. 錯誤的返回值
- 16. File.Exist()返回錯誤的值
- 17. Calendar.before()返回錯誤的值
- 18. 錯誤的返回值
- 19. OBJECT_ID的錯誤返回值?
- 20. getLatitudeE6()返回錯誤的值
- 21. getLocationOnScreen返回錯誤的值
- 22. enum.ToString返回錯誤的值?
- 23. MySQL返回錯誤的值
- 24. ReadProcessMemory返回錯誤的值
- 25. ExecuteScalar返回錯誤的值
- 26. string.equals()返回錯誤的值?
- 27. 返回值的錯誤
- 28. $ location.path()返回錯誤的值
- 29. in_array()返回錯誤的值?
- 30. characterAtIndex返回錯誤的值