h5 实现视频手势上下屏滑动 (类似抖音)

1. 首先考虑无限滑动的实现, 最初的第一反应, 是用竖向的轮播来实现.

这里要考虑的是如何实现无缝衔接~

是否开启无限循环

我是这样实现的, 总共轮播有三帧, 所以特殊的是前两张和没有后续数据的后两张, 是不存在无限循环的, 其它条件下存在无限循环.

前两张

currentIndex 为当前视频的下标, 那么 currentIndex<2 的时候, 返回轮播为 false.

后三张

currentIndex+3 > 总的视频数

, 这时候需要考虑后三张时候是无限循环, 如果滑动方向向上 (即手指下滑), 去返回上一页时, 那么当

currentIndex+2=== 总的视频数

时, 还是无限循环的, 其它情况则取消无限循环.

更新数据

同理, 前两张和后三张需要特殊处理

如果滑动方向向上 (即手指下滑), 则第 0 张没有前一张, 不需要处理

如果滑动方向向下 (即手指上滑), 那么前两张的位置不需要变, 之后的依次进行位置累计改变

如果不是后三张, 或者是手指下滑并且是倒数第二张, 这时, 进行数据替换.

如果位置是轮播的第 0 位, 则将轮播的第 1 位替换为 currentIndex+1, 将轮播的第 2 位替换为 currentIndex-1.

如果位置是轮播的第 1 位, 则将轮播的第 2 位替换为 currentIndex+1, 将轮播的第 0 位替换为 currentIndex-1.

如果位置是轮播的第 2 位, 则将轮播的第 0 位替换为 currentIndex+1, 将轮播的第 1 位替换为 currentIndex-1.

注: 至此, 无限滑动七七八八就这样了, 只是有一个问题, 就是最后一张或者两张, 可能会不安全顺序显示, 即最后一张不一定是最后一张.

后续调试的时候, 意识到用轮播其实是有点傻的行为, 可以使用 fullpage 来实现这个需求, 应该效果会更好一点.

2. 原本以为 h5 来做这个效果, 最难处理的就是无限滑动了, 谁知, 最后卡的我怀疑人生的是 video 的播放.

我没有使用 videoJs 的插件库, 用的是原生的 video 标签, 后续如果有实现类似需求的, 推荐使用 videoJs 的库, 会方便一点.

产品需求, 滑动到该页时自动播放

原本以为应该不是什么大问题, 但是, 神坑就在这里~~~~

视频全屏播放 增加属性 "x5-video-player-fullscreen", "true";"x5-video-player-type", "h5", 增加样式 object-fit: fill

视频在标签内播放, 可以在 video 标签上面加 div 层, 需要设置属性:"webkit-playsinline", "true", "playsinline", "true";

视频预加载, 增加属性 "preload", "auto"

视频播放前出现大的播放按钮, 那是默认的封面图, 可以通过属性 poster 设置, 例如:"poster","url"

iOS 下监听'canplay'和'canplaythrough'(是否已缓冲了足够的数据可以流畅播放), 当加载时是不会触发的, 即使 preload="auto" 也没用 (这个属性在移动端是完全没用的), 但在 pc 的 Chrome 调试器下和 Android 下, 是会在加载阶段就触发. iOS 需要播放后才会触发 (当对于不支持自动播放的渲染引擎还是得通过用户手动触发)

神坑来了, 在 Android 和 iOS 上蹦跶的漂漂亮亮的 video 自动播放, 遇上了 iOS 的低电量模式~~

就报了如下的错误~~

iOS 下 video 标签自动播放报错

说你需要在用户允许时, 才能播放, 那就是在 iOS 的低电量模式下, 手动点击播放~

官方说明: https://webkit.org/blog/6784/new-video-policies-for-ios/

然后我这边的实现是, 在 video 未播放时, 取了一个 image 来作为

video 封面, 点击播放的按钮, 也是 UI 给定的, 但是在 ios12 的低电量模式下, 点击该 image 来调用 play(), 也是会报以上的错误的, 最后兜兜转转, 发现, 在 ios12(写该文时, iOS 最高版本为 12.2) 版本中, 用户点击来触发播放时, video 标签必须在当前视窗内, 并且, 如果点击比它层级更高的播放按钮, 也是不会正常播放的.

image.PNG

最后的处理方式是, iOS 上, 在未播放状态时, 将 video 给定一个透明度, 将播放按钮放置在 video 下层, 透视出来, 因为 iOS 上 poster 的表现还算满意, 就没有再用 image 来作为封面图. 至此在低电量模式下, 点击播放按钮, 可以正常播放~

来源: http://www.jianshu.com/p/c46c01afe3f4

html上下滑动视频代码,h5 实现视频手势上下屏滑动 (类似抖音)相关推荐

  1. Moviepy自动化视频处理:提取视频里的音乐(eg:MV音乐提取,抖音热门音乐提取)

    Moviepy自动化视频处理:提取视频里的音乐(eg:MV音乐提取,抖音热门音乐提取) 本文将讲述的工作: 提取单个短视频中的音乐 整个文件夹下所有视频的音乐,分别输出mp3文件 假想的用途场景: 你 ...

  2. 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,视频seo源码私有化部署?

    抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署? 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署到本地.首先 ...

  3. 类似抖音的短视频APP开发和运营需要注意什么

    类似抖音的短视频APP开发和运营需要注意什么 进入2018年,短视频市场的"战争"愈演愈烈.据艾瑞数据7月份移动APP指数分析显示,视频服务类APP中,抖音位居榜单第四位,仅次于传 ...

  4. 抖音用什么编程语言_类似抖音的短视频APP开发和运营需要注意什么

    年轻人本身就是愿意为娱乐付费,看着钱不能开心,但是钱能买开心这句话也是有道理的.能够用钱买来的欢乐也是值得的. 二.利用碎片化时间 短视频的碎片化适合年轻人的作息时间需求,抖音之所以能火爆,是因为它输 ...

  5. 短视频素材来源有哪些?如何找到优质的抖音素材做剪辑?

    短视频即短片视频,是一种互联网内容传播方式,一般是在互联网新媒体上传播的时长在 5 分钟以内的视频:随着移动终端普及和网络的提速,短平快的大流量传播内容逐渐获得各大平台.粉丝和资本的青睐.随着网红经济 ...

  6. html5仿抖音全屏播放,仿抖音视频全屏播放滑动切换

    1 前言 随着移动技术的快速迭代,数据流量费用的快速下降,视频.直播正成为全民的媒体盛宴,我司必然也不会缺席此次盛宴,这里讲述的是通过h5实现仿抖音视频全屏播放&滑动切换的效果,供我司直播鉴定 ...

  7. 小程序类似抖音视频整屏切换

    更新 现在已经更新了github地址和效果gif,可在文章最后查看.如果我的代码对你有用,请帮我随手star一下. 需求 最近在项目中需要加一个功能,在小程序中将已有的短视频功能,按照抖音的方式来浏览 ...

  8. uniapp上下滑屏切换支持视频和图片轮播实现,类似抖音效果

    实现方法: swiper中嵌套swiper,通过给swiper设置自定义属性,判断数据类型是图片还是视频,从而控制视频自动播放和图片轮播效果: videoPlayer代码: <template& ...

  9. python编程实例视屏-python 下载抖音视频示例源码

    [实例简介] 下载抖音视频 [实例截图] [核心代码] #code:utf-8 import requests from bs4 import BeautifulSoup import json se ...

最新文章

  1. 同济计算机转专业吗,被不喜欢的专业录取了?大学想转专业需谨慎
  2. mysql当前用户user()与current_user()
  3. 夯实Java基础(十八)——泛型
  4. python动态导入模块_Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析...
  5. loj6077. 「2017 山东一轮集训 Day7」逆序对
  6. VMware黑屏解决方法
  7. Java实现简易图形编辑系统
  8. B站的经典封面制作方法
  9. 论文阅读:Factoring Statutory Reasoning as Language Understanding Challenges
  10. 怎么用计算机连接电视,电脑怎么连接电视当显示屏用
  11. 未来: 从Uber到Suber
  12. 列存储相关概念和常见列式存储数据库(Hbase、德鲁依)
  13. video视频标签怎么禁止用户拖动进度条快进
  14. 网络指标含义解释( 吞吐量 反应时间 延时 抖动 丢包)
  15. 如何安装UOS操作系统
  16. Arduino基础项目九:制作感光灯
  17. i9-9980HK和i9-9880H 哪个好
  18. SIEMENS SIMATIC STEP 7 v5.7 Professional 2021
  19. 【Python】【难度:简单】Leetcode LCP 02. 分式化简
  20. javascript面试题(javaScript面试题)

热门文章

  1. 精伦的开发盒子USB上外挂SD卡路径
  2. 软件 购 买 优 惠 券及使用说明
  3. HDU 6148 Valley Numer(数位DP)
  4. 寒江独钓 Windows内核安全编程
  5. c语言case2什么意思,switchCase2
  6. 玩转HTML(004)
  7. UTF-8的编码规则
  8. git恢复某个文件到上一个提交版本
  9. 我一个普通程序员,光靠GitHub打赏就年入70万,
  10. 深信服信锐 技术支持(网络工程师)