前提介绍:


iOS中微信的浏览器内核应该是和Safari浏览器同样的内核


Android中微信的浏览器内核是腾讯自己开发的X5腾讯浏览服务(Android上的QQ浏览器也是这个内核)



1 内联播放视频


iOS上给video标签增加playsinline和webkit-playsinline(兼容新版旧版),对于在Safari中可以内联播放的,那么在微信中也是内联播放的


Android上给video标签增加playsinline和webkit-playsinline(兼容新版旧版),只有部分机型支持(已知Sumsung Note4(Android 6.0.1)可以,Vivo X9(Android 7.1.1)不可以,其它手机和版本没有测试)


Android上给video标签增加x5-video-player-type="h5"属性,可以做到类似内联播放的样式,但顶部的微信的title会ui有变化



2 根据视频的宽高,取视频中间一块正方形播放,其余用外面盒子设定宽高布局的方式overflow: hidden,对视频多余部分进行遮罩,并视频内联播放


iOS,用1的方法做内联播放,然后宽高以及video相对外面盒子的定位等参数通过计算获得设置在对应的元素上即可


Android


2.1 使用playsinline和webkit-playsinline做内联,然后宽高以及video相对外面盒子的定位等参数通过计算获得设置在对应的元素,对于可以内联播放的Android机器,多余的部分将会溢出显示,并不会这罩住(QQ浏览器同理也是这样,但是Chrome浏览器Android版就可以,说明那个X5内核有点坑爹)


2.2 使用给video标签增加x5-video-player-type="h5"属性,做到类似内联播放的样式,然后宽高以及video相对外面盒子的定位等参数通过计算获得设置在对应的元素,虽然是内联的样式播放,但是原来属于视频的但被遮罩的部分,将会变成黑色的底(即ui也不好看,不推荐)


2.3 既然2.1和2.2两种方法都不适合,所以建议需要进行遮罩裁剪内联播放的视频,在Android的微信上还是放弃吧,建议做成,点击播放按钮时,弹出一个全屏播放的浮层(自己布局一下fixed的盒子,里面放video标签,记得此标签不要写内联的任何样式playsinline和webkit-playsinline和x5-video-相关的属性)



3 内联播放视频的时候,播放、暂停、进度条的ui自己定制


iOS上,使用1的方法,加上自己写ui,js调用play,pause控制播放暂停,监听ondurationchange和ontimeupdate可以获取总时长和当前播放的时间,计算出播放进度


Android上,微信中的播放器样式是没法自己定制的(chrome就可以,但是X5的腾讯浏览服务就是不让),官方的说法是这是产品策略(在微信或手Q上,如果是qq.com域名下的video可以通过不指定control属性(表明由页面自己绘制控制面板)来控制)(产品经理都是一样讨打么)



参考资料:

H5同层播放器接入规范

https://x5.tencent.com/tbs/technical.html#/detail/web/1/cecfc00a-f9d1-448f-b04d-8acdf571e469

https://x5.tencent.com/tbs/technical.html#/detail/web/1/e41b0474-8411-44be-a337-edb776271b53



更多相关文章

  1. 基于FFmpeg和SurfaceView实现Android原生窗口(ANativeWindow)的视
  2. Android播放在线音频问题,报错MediaPlayer error
  3. android音乐播放器——通过webview下载歌曲
  4. Android中Ringtone播放详解【安卓源码解析####】
  5. Android视频播放项目总结之 使用第三方Vitamio库,开发万能播放器(
  6. Android播放音频的两种方式
  7. 【流媒體】Android(安卓)实时视频采集/编码/传输/解码/播放—方
  8. android 循环播放图片实现
  9. 大话企业级Android应用开发实战 音乐播放器的开发

随机推荐

  1. android 锁屏时,不运行锁屏程序
  2. android创建文件夹
  3. 解决Android(安卓)Studio Fetching Andro
  4. Android(安卓)菜单(OptionMenu)大全
  5. 一个APK反编译利器Apktool(android汉化)
  6. 安卓报错:AS Error inflating class andr
  7. Android(安卓)LayoutEditor使Eclipse自动
  8. Java/Android引用类型及其使用分析
  9. Android(安卓)onTouchEvent, onClick及on
  10. Android(安卓)Studio 学习实例记录-手电