移动端关于视频跳转的currentTime兼容问题

视频交互类的项目难免会遇到视频跳转位置的问题,我这大致分为两类:

一、手动跳转:就是说在用户主动做了某一操作后视频跳转到某一个时间点。

二、自动跳转:当视频到达某一时间节点自动跳转到另一时间节点。

第一类其实只要控制时间节点能对上就基本没问题,也就是

video.currentTime = 1 //单位:秒

但实际上,android却表现怪异,视频总是会跳到你想要的视频时间点的附近1-2s左右;

解决方案为,跳转视频的关键帧间隔,简单解释为,当视频的fps=24,关键帧间隔为72(默认)时,视频会在每 72/24=3s 设置一个关键帧,当你设置video.currentTime=2.5时,android会自动跳到最近的关键帧,也就离2.5s最近的3s处,也就会导致时间点会偏差1-2s。导出视频时可以设置你想要的帧间隔,但同时帧间隔越小则视频体积会越大,合理设置帧间隔或者插入相同帧来延长时间点,使得时间点包含关键帧是比较好的方案,比如说fps=24,想要跳到1秒20帧,那就关键帧间隔设置为48,然后1秒21、22、23、24帧跟20帧一样,视频会跳转到关键帧1秒24,如此画面就会是你想要的。

第二类问题就除了要解决第一个视频时间点问题外,还要监测视频当前的进度,video标签有一个自带的方法timeupdate,但有一个问题,就是这个事件是大概250ms执行一次,但如果fps=24,帧间隔大概1000/24=42ms;你拿到时间点会有几帧的偏差。可以使用定时器来拿到当前时间点

setInterval(() => {
    let cur = video.currentTime
}, 40);

然后再在每个时间点的后面插入3-4帧相同帧,确保不会跳帧,以上,基本可以确保视频位置正确的跳转。

展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值