不知不觉又到了2019年的深秋,想不到上一篇文章孩子还没出生,这一篇就已经半岁了。创业加上带孩子,时间会过得飞快。在这里劝你们仍是不要过早创业(gank),多多学习(发育)才实际。打工虽不自由,起码安稳,面对任务和书本,胜于面对盈利仍是亏本。javascript
废话很少说,如下正文。css
PS:要叠加UI,就得是行内播放而非全屏,iOS倒好,安卓的微信用的X5内核,一言难尽,卡住很多人,网上求助相关问题的不在少数。html
查看demo
仓库地址
PS:在微信中打开才能自动播放哦。java
<div class="container"> <!-- For iOS --> <video src="https://static.shikehuyu.com/vincent/wx-video-demo/movie.mp4" playsinline webkit-playsinline loop> </video> <!-- For Android --> <canvas></canvas> <!-- 示例弹幕 --> <div class="danmu">示例弹幕,表示你能够听任意UI在视频上面</div> </div>
<style> video { width: 80vw; height: 80vw; object-fit: contain; object-position: center; display: none; } canvas { display: none; } </style>
function initVideo() { var isAndroid = window.navigator.userAgent.match(/android/ig) if (isAndroid) { // 安卓 var src = "https://static.shikehuyu.com/vincent/wx-video-demo/movie.ts" player = new JSMpeg.Player(src, { canvas: canvas, autoplay: true, progressive: false, loop: true, onVideoDecode: function() { canvas.style.display = 'block' canvas.style.height = 80 / (canvas.width / canvas.height) + "vw" } }) } else { // iOS player = video video.style.display = 'block' } } window.onload = function() { initVideo() // 自动播放 document.addEventListener('WeixinJSBridgeReady', () => { player.play() }) }
来自百度百科
ts即"Transport Stream"的缩写。MPEG2-TS格式的特色就是要求从视频流的任一片断开始都是能够独立解码的。
简单地说就是视频数据流,将mp4等格式视频转换成ts后,就能够一段段进行解析,可用于视频直播。JSMpeg就是经过解析视频数据,而后绘制在canvas上,来实现视频播放的。android
参考 JSMpeg的READMEgit
转换前须要安装ffmpeg,能够到ffmpeg官网下载,也能够用homebrew等工具安装:github
brew install ffmpeg
我目前只单纯的转换一下,没特别输入其余参数,按教程来走吧。终端进入到视频目录,输入以下命令:web
ffmpeg -i movie.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 -b 0 movie.ts
1.用npm安装的JSMpeg不可用,亲测会出现雪花屏,官网https://jsmpeg.com/下载的才可用!npm
2.progressive需手动设置为false,默认为true,会发起屡次请求,产生额外流量!canvas
看起来只是一个很小的功能实现,预计5分钟,填坑2小时。不知道是否有其余更好的实现方法,就目前而言,iOS用video、Android用JSMpeg,而后依靠监听WeixinJSBridgeReady事件,实现微信H5视频行内自动播放,就是个人银弹了。
但愿对你们有帮助吧!
感谢 gchxp的回复: tx今年新加的新属性x5-video-player-type="h5-page" 针对Android,亲测可用,需测试兼容性