Android html5 video js设置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码 支持!   :))  双下巴微笑

  

原文地址:https://www.cnblogs.com/luoeeyang/p/9765506.html

时间: 2024-08-28 11:09:18

Android html5 video js设置currentTime不准确,解决办法。的相关文章

Android使用TextView,设置onClick属性无效解决办法

Android在布局文件中为View提供了onClick属性,使用方法如下: <TextView       android:id="@+id/user"       android:layout_width="@dimen/px_171"       android:layout_height="fill_parent"           android:onClick="iconClickListener"   

mint/ubuntu Android Eclipse ADT 简单安装及运行崩溃解决办法

1. 下载 Android SDK(ADT Bundle) http://developer.android.com/sdk/index.html (网站访问不了或者慢,请参考:轻松修改本地hosts文件,稳定用谷歌搜索和谷歌服务) (不想弄这个,请去我的百度网盘下载:http://pan.baidu.com/s/1jGIDNO6) 2. 解压到一个目录下,例如: unzip adt-bundle-linux-x86_64-20140624.zip -d ~/ 解压后得到文件夹:adt-bund

安卓模拟器Android SDK Manager 无法获取SDK列表的解决办法

1.打开运行Android SDK Manager ,Tool菜单,选择Options,打开设置菜单,勾选“Force https://...sources to be fetched using http://...”,,然后点Close关闭,如下图: 2.设置hostes文件能电脑能正常访问Google下载中心 打开C:\Windows\System32\drivers\etc文件夹,双击hosts文件,选择使用记事本打开,把以下代码加到hosts文件中. 74.125.113.121 de

Xamarin开发Android时Visual Studio 2012没有智能提示解决办法

Most of the people who work with Xamarin’s Mono for Android in Visual Studio 2012 face a bug where Intellisense doesn’t work for AXML in source view. One of the fix which worked for me is mentioned below. Launch Visual Studio 2012 Open a solution wit

IE浏览器JS提示缺少对象的解决办法

前端文件中写了一个AJAX取城市列表的JS方法.一个检测表单输入的JS方法,还有一些其它的JS代码. 整个页面代码在chrome和火狐浏览器下一切正常.但是在IE浏览器下在取城市列表的JS方法中提示缺少对象,这个不太具体的报错一开始就让我头疼,因为在chrome等浏览器中是可以运行的,所以初步估计是代码冲突,于是一段代码,一段代码的删,搞了一个小时,发现问题出在检查表单的JS方法里: 表单中有一个选择产品分类的下拉框,这个下拉框的name和ID都定义为:class ,然后在检查表单的JS方法里取

Android intent 传值不更新的原因和解决办法

当 Activity 的启动模式是 singleTask 或者 singleInstance 的时候.如果使用了 intent 传值,则可能出现 intent 的值无法更新的问题.也就是说每次 intent 接收到的值都是第一次接到的值.因为 intent 没有被更新.想要更新需要做两件事情. 1. 发送方 Activity,加上一句话 ? 1 PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,Pen

Xamarin.Android 反复报 Please Download android_m2repository_rxx.zip 的解决办法

我原来一直用的是老版本的 Xamarin , android_m2repository_rxx.zip 早已在 C:\Users\XXX\AppData\Local\Xamarin\Android.Support.Design\XXX 中存在,所以更新最新的 Xamarin 后, 这一块都是没有任何问题的. 有园友反映这个 zip 明明已经放到了指定的文件夹中,但是还是会反复的 Please download XXXX. 1>C:\Program Files (x86)\MSBuild\Xama

Android 运行时报错Error running app: Instant Run requires &#39;Tools | Android | Enable ADB integration&#39; to be enabled. 的解决办法

解决方法:在菜单栏,Tools->Android->Enable ADB integration勾选就可以了. Android 运行时报错Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled. 的解决办法

android DatePicker / TimePicker 占空间太大的解决办法

DatePicker 与 TimePicker 控件占用的空间是固定的,没有参数可以更改. 如果修改 length 和 width 属性,只会让控件被切割,显示将不完整.很多人说可以使用 scale 属性来放大或缩小 android:scaleX="0.8" android:scaleY="0.8" 这种方法虽然会缩小控件,但控件还是没法显示全. 找到的一个不错的解决办法是,用 Java 反射机制获取控件相关属性,然后修改.代码如下: Field[] fields