从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

从0开始写一个播放器系列-开篇相关推荐

  1. 用qt帮我写一个播放器,要求实时解码h264

    好的,我来帮你写一个基于 Qt 的播放器,它可以实时解码 H.264 视频流. 首先,你需要安装 Qt 开发环境和相关工具,然后打开 Qt Creator 创建一个新项目.在新项目中,你需要添加一些代 ...

  2. FFmpegSDL教程:用不到1000行代码写一个播放器

    序 更新:本教程最近一次更新于2015年2月. FFmpeg是一个创建视频应用,甚至更通用程序的强大音视频工具库.FFmpeg能够完成视频处理过程中解码,编码,封装和解封装所有这些棘手工作.借助它,可 ...

  3. 免费音乐接口,当时写音乐播放器没资源,今天特意用nodejs写了一个,并布署到了cloudfo......

    2019独角兽企业重金招聘Python工程师标准>>> 接口首地址为ttpod.cloudfoundry.com 音乐搜索接口为ttpod.cloudfoundry.com/musi ...

  4. 制作一个播放器(二)

    制作一个播放器(一) 制作一个播放器(二) 接着上一章的热身,咱们继续写播放器.上一篇中咱们用的是句柄的方式来播放视频.实际开发中,我们更多的是把数据给回调出来,这样更好的去显示视频,处理视频.这期, ...

  5. 使用纯css做一个播放器

    首先,贴出成品图,如下: 可以发现播放器的基本形状有了,但是需要精确到每一个方向,不能溢出,就得以如下的方式写,贴出静态代码: html如下: <!DOCTYPE html> <ht ...

  6. 易语言用多文件对话框写MP3播放器

    利用多文件对话框和超级列表框,示范了一个本地MP3播放器. 视频链接: 511遇见易语言教程 教程源码: .版本 2 .支持库 iext .支持库 xplib.程序集 窗口程序集_启动窗口.子程序 _ ...

  7. Anyplayer 1.0.5 - WordPress万能播放器插件

    http://cpiz.net/blog/2010/12/anyplayer-1/ Anyplayer 1.0.5 - WordPress万能播放器插件 原创作品,转载请注明出处 题外话: 08年初写 ...

  8. 用JavaScript在网页编写一个播放器

    今天是教师节,我先祝各位老师节日快乐!!! 今天我和大家分享用JavaScript在网页编写一个播放器. 对于播放器,大家都不陌生,那么要怎么样才能实现它呢? 下面是我做的一个播放器的图 首先我们从上 ...

  9. 使用IntentService给自己的Android应用写一个文件下载器。

    接着上一篇的http://www.cnblogs.com/zhengxt/p/3657833.html,当我们想给自己的APP写一个文件下载器时,可以用重写IntentService来实现. 使用In ...

最新文章

  1. backup ram不稳定 stm32_STM32学习笔记
  2. iOS 11开发教程(十九)iOS11应用视图美化按钮之设置按钮的外观
  3. Delphi_04_Delphi_Object_Pascal_基本语法_02
  4. py脚本得到Python的版本
  5. windows ping 不通虚拟机
  6. 多图文帖智能封面提取方案
  7. MySQL 常用运算符
  8. 换工作,让我里外不是人,到底错在哪儿
  9. 协同过滤算法的几篇文章PFM/svd/ svd++
  10. arduino动态刷新显示_Arduino驱动TFT彩色触摸屏-有没有更好的方法?
  11. Rife算法的Matlab实现
  12. 优科豪马冬季SUV轮胎G072的性能特点全解
  13. 免费真实增加网站访问量的方法
  14. C语言 线程 进程 优先级,C++线程优先级SetThreadPriority的使用实例
  15. [anjularjs] ui-router嵌套ui-view不刷新问题
  16. 【电脑开机没反应的常见原因和解决方法】
  17. 制药企业的发展趋势--行业公司数据调研
  18. ESP32 寻迹模块测试
  19. Visual Studio2019完全卸载方法
  20. java实现三宫格及其扩展_使用css伪类before/after实现 正方形三宫格、正方形六宫格、正方形九宫格...

热门文章

  1. 让 WebRTC 使用外部的音视频编解码器
  2. C++继承、虚函数、覆盖、多态、纯虚函数
  3. 【用C++面向对象的思想以及STL完成贪吃蛇游戏】
  4. JavaWeb_项目E家园
  5. Wrod2vec算法实战_3分钟热情学NLP第5篇
  6. 职称计算机考试模块论坛怎么样,今天做职称计算机WROD模块练习的一些感受
  7. 我们生活在一个即将巨变的时代,生物大灭绝与生物大爆发
  8. 考研初试占比高,复试压力小院校合集~
  9. 2021 ICCV : Instance-level Image Retrieval using Reranking Transformers
  10. multisim 四位数码管_multisim中数码管 DCD-HEX 四个引脚都是指的什么?