早在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不准确,精确,解决办法。的更多相关文章

  1. HTML5服务器推送消息的各种解决办法,html5服务器

    HTML5服务器推送消息的各种解决办法,html5服务器 摘要 在各种BS架构的应用程序中,往往都希望服务端能够主动地向客户端推送各种消息,以达到类似于邮件.消息.待办事项等通知. 往BS架构本身存在 ...

  2. Android Studio 找不到夜神模拟器的解决办法

    Android Studio 找不到夜神模拟器的解决办法 1.启动夜神模拟器 2.找到你电脑上的夜神安装目录,在bin目录下打开cmd窗口,运行命令 nox_adb.exe connect 127.0 ...

  3. 利用monkey测试android,入门级用户可能遇见的错误及解决办法 【转】

    转自[http://blog.csdn.net/zm2714/article/details/7977930] 一.D:\android\android-sdk-windows\tools目录中没有a ...

  4. Unity3d导出Android的apk文件时相关问题的解决办法

    今天上午着手将一个unity3d开发的小游戏build到android手机上运行,结果遇到了不少问题. 首先遇到的第一个问题是在build到一半的时候,弹出如下报错: Error building P ...

  5. Eclipse下Android开发的问题:Installation error: INSTALL_FAILED_NO_MATCHING_ABIS 解决办法

    在Android模拟器上安装apk的时候出现   INSTALL_FAILED_NO_MATCHING_ABIS 这个错误提示的解决办法. 是由于使用了native libraries .该nativ ...

  6. (转)eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法

    文章来源:http://blog.csdn.net/zcyhappy1314/article/details/8307534 下面说的这种情况是在正确安装ADT插件的前提下,重启eclipse后,工具 ...

  7. Android开发 |常见的内存泄漏问题及解决办法

    在Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要 ...

  8. Android SDK安装时碰到的问题之解决办法

    问题:hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com> Fetchin ...

  9. android模拟器经常出现的一些问题及解决办法

    1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 run as android applica ...

随机推荐

  1. 吴裕雄--天生自然 JAVA开发学习:发送邮件

    import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; pu ...

  2. LeetCode No.136,137,138

    No.136 SingleNumber 只出现一次的数字 题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复 ...

  3. Qt 信息提示框 QMessageBox

    information QMessageBox::information(NULL, "Title","Content",QMessageBox::Yes | ...

  4. Jarque-Bera test|pp图|K-S检验|

    Jarque-Bera test: 如何绘制pp图?   找该直线的截距和斜率,通过截距和斜率的值找到正态参数均值和方差,可对这些正态参数进行正态检验. K-S检验的的特点? 并不是只针对正态分布,是 ...

  5. vue2.0学习之路由

    下载vue-router: cnpm install vue-router --save router/main.js /*引入所需要的组件*/ import VueRouter from 'vue- ...

  6. ARM7探究

    1.流水线:三级流水线 预取.译码.执行.三级并行发生 2.什么是哈佛结构? 哈佛结构是一种存储器结构,是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是 ...

  7. [LC] 53. Maximum Subarray

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...

  8. Caused by: com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0, fastjson-version 1.2

    环境: vue.js 问题: 当添加评论时 重新查询数据刷新数据控制台异常Caused by: com.alibaba.fastjson.JSONException: syntax error, ex ...

  9. Proto3使用指南

    这篇指南讲述如何使用Protocol Buffers来结构化你的Protocol Buffer数据,包括.proto文件语法以及如何从.proto文件生成你的访问类型.本文主要涵盖了proto3的语法 ...

  10. ES:PB级别的大索引如何设计

    一.单个大索引的缺陷 如果每天亿万+的实时增量数据呢,基于以下几点原因,单个索引是无法满足要求的: 1.存储大小限制维度 单个分片(Shard)实际是 Lucene 的索引,单分片能存储的最大文档数是 ...