Android html5 控制video currentTime不准确,精确,解决办法。
早在flash时代 我们控制视频播放指定时间位置的画面也会有不准确的情况,
具体情况表现为:video.seek(time) 而实际画面会跳到此时间附近(1-2秒)的画面
而HTML5 我们通过
var vd=document.getElementById("DOM ID名");
vd.currentTime=10 ;
可以指定视频立即播放对应时间位置的画面 (电脑,IOS端均可)
但是andorid端真机上却发现几个问题
Q:设置 vd.currentTime=时间,但是却没有效果;
A:android端设置时间后,一定要video.play(); 才会刷新画面。
Q:vd.currentTime=时间;并video.play(); 但是视频居然不是从我配置的时间位置开始播放的,(具体表现为,画面会跳到此时间附近(1-2秒、甚至更多)的画面)
A:这里要引入一个词语叫【视频关键帧距离】android端会跳转到离你设置currentTime 最近的一个关键帧位置播放。
注意:这个【关键帧距离】中的关键帧并不是我们常说的AE等软件里插入的关键帧;

你还可以访问这里查看更多关于视频中的名词解释:
https://helpx.adobe.com/cn/media-encoder/using/video-audio-encoding-compression.html
那么,随之而来的解决思路就是改变视频的关键帧距离。例如:当前视频 fps=25, 关键帧距离是75帧(简单计算就是3秒一个关键帧), 那么我设置 vd.currentTime=7, 7*25 =175 视频将会从 最近的一个关键帧(150帧)播放。 也就会出现我们控制播放时间不准确的现象。当我们改变关键帧距离为25帧 ,那么就可以准确的控制 vd.currentTime=7 的跳转播放画面了。如果你还有更高的精度要求,你可以继续缩小关键帧距离。但是请注意:在其他参数相同的情况下这会增大视频的体积。
最后,怎么来设置视频的关键帧距离呢?恩,你猜到了,这家公司又出镜了:Adobe Media Encoder 与 After Effects 和 Premiere Pro 这3款软件都可以设置,我这里使用了Media Encoder。 下面为截图
导入视频,点击红框打开配置

设置界面。有心情的可以慢慢研究他的功能

右侧找到对应的配置,设置好 输出即可

到此,android html5 video 设置currentTime 不准确的问题得到解决。
如果此文对你有帮助,有力的推荐一下,有财的右侧扫描QR码 支持! :)) 双下巴微笑
Android html5 控制video currentTime不准确,精确,解决办法。的更多相关文章
- HTML5服务器推送消息的各种解决办法,html5服务器
HTML5服务器推送消息的各种解决办法,html5服务器 摘要 在各种BS架构的应用程序中,往往都希望服务端能够主动地向客户端推送各种消息,以达到类似于邮件.消息.待办事项等通知. 往BS架构本身存在 ...
- Android Studio 找不到夜神模拟器的解决办法
Android Studio 找不到夜神模拟器的解决办法 1.启动夜神模拟器 2.找到你电脑上的夜神安装目录,在bin目录下打开cmd窗口,运行命令 nox_adb.exe connect 127.0 ...
- 利用monkey测试android,入门级用户可能遇见的错误及解决办法 【转】
转自[http://blog.csdn.net/zm2714/article/details/7977930] 一.D:\android\android-sdk-windows\tools目录中没有a ...
- Unity3d导出Android的apk文件时相关问题的解决办法
今天上午着手将一个unity3d开发的小游戏build到android手机上运行,结果遇到了不少问题. 首先遇到的第一个问题是在build到一半的时候,弹出如下报错: Error building P ...
- Eclipse下Android开发的问题:Installation error: INSTALL_FAILED_NO_MATCHING_ABIS 解决办法
在Android模拟器上安装apk的时候出现 INSTALL_FAILED_NO_MATCHING_ABIS 这个错误提示的解决办法. 是由于使用了native libraries .该nativ ...
- (转)eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法
文章来源:http://blog.csdn.net/zcyhappy1314/article/details/8307534 下面说的这种情况是在正确安装ADT插件的前提下,重启eclipse后,工具 ...
- Android开发 |常见的内存泄漏问题及解决办法
在Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要 ...
- Android SDK安装时碰到的问题之解决办法
问题:hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com> Fetchin ...
- android模拟器经常出现的一些问题及解决办法
1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 run as android applica ...
随机推荐
- servletHomeWork
2. http全称是什么? 超文本传输协议(HTTP, HyperText Transfer Protocol)是互联网上应用为最广泛的一种网络协议. 3.http协议是无状态的协议是什么意思?请说明 ...
- 十、linux-mysql下的mysql数据库增量恢复
1.全量备份 全量数据就是数据库中所有的数据,全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -ppoldboy -S /data/3306/mysql.s ...
- [JS]實作LinkedList鏈結串列
由於自身資料結構的基礎薄弱,買了一本JavaScript資料結構與演算法實作的書來看,重新把LinkedList鏈結串列學習了一遍,並用JS實作出來. LinkedList鏈結串列 要存放多個元素,最 ...
- 【DSP】TMS320F28335的GPIO
--> 关于TMS320F28335的GPIO的基础操作 TI的c2000系列DSP大多数的外设信号与通用输入/输出 (GPIO) 信号复用. 这使得用户能够在外设信号或者功能不使用时将一个引脚 ...
- 30)PHP,引用对象和克隆对象的区别
复制文件.建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化.
- 为什么java的接口的方法是public abstract修饰?为什么属性是public static final 修饰?
为什么java的接口的方法是public abstract修饰? 1.首先要明白接口的定义和作用是什么: 接口定义:接口是一个全部由抽象方法组成的集合,里面都是抽象方法和常量,用interface修 ...
- class.forName() 和 classLoader 的区别
相同点: java中class.forName() 和 classLoader 都可用来对类进行加载 不同店: 1.class.forName()除了将类的 .class ...
- Web Service概述 及 应用案例
Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用 ...
- kettle的基本使用
一.下载下载kettlehttp://sourceforge.net/projects/pentaho/files/Data%20Integration/7.0/pdi-ce-7.0.0.0-25.z ...
- “大屏,您好!” SONIQ声光揭新品“U•F•O”神秘面纱
作为全球第一批做互联网智能电视的传媒企业,SONIQ声光于4月22日在中国大饭店举行了盛大的新品发布会.其中的重头戏就是当天发布会上作为先锋部队入驻中国电视市场的"UFO".笔者作 ...