微信浏览器视频播放器开发实践
在移动端页面中,video通常会被浏览器劫持,然后替换使用浏览器自定义的播放器。而由于微信有庞大的用户使用量,所以兼容微信就不可避免。在这里记录一下,项目开发过程中出现的问题和解决方法
初始代码:
1 | // index.html |
1. 视频高度太高的问题(兼容问题的开始)
由于项目中使用的视频,宽高比不固定,有宽屏视频,也有高屏视频。而代码中只限制了视频的宽占比为屏幕宽,高度自由不限制。所以在手机屏幕高度比视频高度小的情况下,就会出现视频太高,而一屏不能完全显示,导致部分视频被遮住的情况
这个问题也很好解决,把高度限制一下就OK,如下:
1 | .video { |
但是在测试过程中,一个新的问题出现了
在测试过程中发现,iphone和部分android手机上表现优秀,高视频会以最大高度40vh,宽度等比缩小,然后居中播放。
但是部分android手机上的视频,会出现高视频的宽度被横向拉伸的情况,出现的机率还挺高。
2. 视频被拉伸的问题
既然宽度被拉伸,那就设置视频的宽度看一下具体的表现,如下:
1 | .video { |
测试结果并不满意,因为宽度被设置,视频两边会有留白的情况,而且播放器下面的控制条的宽度也被缩小,效果很不好看。而且宽视频的问题也不能解决。但是在测试过程中,发现部分android手机会全屏播放,而全屏播放的视频宽高没有被拉伸。
最后解决方案: iphone手机上内联播放,android手机上全屏播放,根据文档修改代码
1 | // index.html |
测试结果: android手机上和iphone手机上都如期表现,但是android的全屏播放不完全,虽然显示了全屏播放的界面,但是高度是40vh, 宽度也没有占满屏幕
3. 全屏显示不满的问题
解决办法,查询文档可知,微信在视频全屏的时候,会触发x5videoenterfullscreen,退出全屏时会触发x5videoexitfullscreen。所以可以监听这两个事件,全屏里不限制高度,退出全屏里还原回max-height
1 | // index.js |