从一个简单的Video标签开始幻想

video

最近接到一个需求,需要做一个在线直播。是做web端的。

需要考虑以下几点:

  1. 安卓/ios 的兼容性
  2. 在微信浏览器中打开的兼容性
  3. 弹幕组件 buibuibui~
  4. 延时

根据以上要求,需要做技术选型。

flv

这个延时低,很适合做直播。但是ios貌似不支持mse,也就是不支持flv。

这里不得不提到b站同款解码。flv.js。

hls

hls是ios中原生支持的流,包括安卓也是支持的。所以选定hls作为下发到前端的流。

推流端是用的网易云信的直播服务。

其实到这里一切都很正常,包括后续在pc上模拟开发的时候,一切正常。

直到...

video遇上所谓的安卓本土化浏览器。

由于我们的直播有些要求,需要隐藏控制条,需要自定义播放、暂停。类似于抖音竖屏直播那种交互。对于安卓本土化浏览器我真的是忍不住叹气😮‍💨,什么牛马。

看个例子

这是我们想要的样子

在ios端中也是这个样子,很正常,看着很舒服~对吧。

在xxx浏览器、xxx浏览器中

这个是很轻微的一种,根据不完全测试,有很多浏览器会给你提示一个下载视频、投屏、进度条、时长、小窗等操作按钮。即使你代码中写了不展示控制条,只能是无效。

所谓的本土化,就是劫持你的video标签,给你硬生生加点东西上去,魔改一下浏览器。让一大堆开发者抓耳挠腮。气死个人。

于是乎,看别人的网站咋写的。

  • 首先b站的直播,无论在安卓、ios表现的都是一个样。
  • 扒一扒代码,发现跟我们写的没什么两样。。

网络资料:加上什么playsinline,x5-playsinline,一大堆东西,加并无用

是否可以另辟蹊径 ?

降低画质,使用canvas绘制视频,绕过video标签

中间过程就不说了,直接告诉大家结果

在安卓中,部分手机黑屏,canvas无法绘制。

是否已解决?

否!

最终更改了设计图,让他有控制条,自定义一部分,让他出现一部分。

好好好,本土化。

引申思考

之前写过一篇文章,叫做滴滴首页动画实现,当时评论区很多同学问为什么需要通过图片的方式加载视频,我其实并不知道为啥,只能猜测兼容性之类的问题吧。现在才发现:要是用视频的话,首页进去好大一个进度条😂😂😂😂😂😂😂。

希望大佬们有思路,求教~

相关推荐
lyz24685918 分钟前
vue3页面因参数未声明而报错的常犯错误
前端·javascript·vue.js
摸爬滚打的小李21 分钟前
流程图同步AI生成
前端
Hilaku32 分钟前
我重写了整个项目,但没人感谢我!
前端·javascript·程序员
zach1 小时前
Vue/React SPA 打包部署后,子路由刷新 401 未登录问题彻底解决
前端·nginx·next.js
旋生万物1 小时前
素数螺旋映射 $z_n=n^{1+i}$ 的角分布统计检验与零模型对比
大数据·前端·人工智能·算法·云原生·螺旋生成论·螺旋相位
亿元程序员1 小时前
游戏引擎都没用!纯AI又上线了一款蚂蚁搬家小游戏!
前端
福兮说1 小时前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
码艺-Alimjan1 小时前
Web 网站打包桌面应用的另一种方式,超级简单(C# exe 33Kb)
开发语言·前端·c#
flash俊杰1 小时前
时间线到 filter_complex:把编辑文档编译成 FFmpeg 滤镜图
前端
Tyrvision2 小时前
新品发布前,三维动画怎么排期才不挤在最后一周?
前端