从0开始写一个播放器系列-开篇

从0开始写一个播放器系列-开篇

阅读本系列博客所需要具备的知识: js, ts , canvas Api , DOM, webpack, 不懂也没有太大的关系, 我会捎带着写出来, 剩下的自行百度

第一步,梳理所需要的功能以及收集实现方案

首先需要确定需求

既然想要做一个播放器,首先应该具有播放器基本的功能,

  • 播放/暂停
  • 下一个(如果传入的播放地址为数组)
  • 选择清晰度
  • 倍速播放
  • 音量
  • 画中画
  • 宽屏
  • 网页全屏
  • 全屏
  • 镜像

上方需求很简单, 通过原生的video控制条和简单的css就可以实现, 但是我们既然要做播放器就不能仅限于基本功能的开发, 所以需要加大一点难度

使用canvas 渲染 video

为什么使用canvas渲染video

表达不准确请各位大佬评论区指出

之前在准备做播放器之前我就知道canvas可以渲染video标签, 有一段时间我也很迷惑, 为什么我打心底觉得要使用canvas渲染video, 知道我开始写这篇博客的时候突然想到了.

各个浏览器之间, video的行为是不同的, 可能会出现怪异行为, 使用canvas封装一次video会很大程度的解决这些怪异行为以及很好的适配移动端

既然使用canvas渲染video标签了, 不搞点事情肯定是对不起canvas标签的, 根据我目前所知的知识, canvas是可以很好的调整整体显示的内容的, 比如说修改每个像素点的RGBA值

所以添加一个实验室功能(可能会影响到性能的功能): 滤镜功能

滤镜功能的作用是每次渲染canvas的时候修改每个像素的RGBA值

滤镜功能引出的思考:

是否需要一个中转canvas来获取ImageData

所以暂定解决方案为, video放到中转canvas中, 利用中转canvas来drawImage

最后, 我觉得一个播放器没有弹幕是没有灵魂的, 所以还要添加弹幕功能

这个播放器期望支持原生html5平台以及vue和react, 所以需要使用原生js或者typescript开发, 又因为Typescript已经趋进于主流, 所以本项目决定使用typescript进行开发

总结一下

播放器需要拥有基本的功能, 使用canvas渲染video标签, 使用中转canvas进行ImageData的获取, 添加滤镜功能, 添加弹幕功能, 使用Typescript进行开发

至此, 需求整理完毕, 下篇博客开始搭建开发环境

因为本人准备边开发播放器边写本系列的博客, 所以更新速度会比较慢, 很多内容都会继续调整, 不足之处望各位海涵

github地址: https://github.com/lidppp/dp-video
本人博客地址: https://www.lidppp.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值