从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

17 | 如何使用Canvas绘制统计图表(上)?

浏览器兼容性适配
Canvas 渲染上下文
WebGL
OpenGL
Skia库
WebGLRenderingContext类
CanvasRenderingContext2D类
硬件加速
软渲染
光栅化
分辨率
Canvas 的使用
Canvas 实现原理
图形/图像渲染原理
非矢量图
矢量图
3D图像
2D图像
HTML5
WebRTC
Canvas
参考文章

该思维导图由 AI 生成,仅供参考

Canvas 是 HTML5 标准中的一个新元素,你可以把它想像成一块“画布”,有了它你就可以在网页上绘制图像和动画了。在 HTML5 页面中可像使用其他元素一样使用 Canvas,如 Video 标签。为了能够在 Canvas 上绘图,浏览器为此提供了一整套 JavaScript API ,我们将在后面的代码中看到如何使用它们。
实际上,早期要想在浏览器的网页上实现动画效果,需要用到 Flash 技术。但通过 Flash 实现动画非常繁琐,你必须专门去学习 Flash 相关的知识。而 Canvas 则完全不用,它就是一个简单的标签,通过几行 JavaScript 代码你就可以很容易地控制它。
Canvas 最早由苹果公司开发的,用在 Mac OS X 的 WebKit 组件中。之后,各大主流的浏览器都对 Canvas 进行了支持,所以它也被纳入到了 HTML5 的规范中。
Canvas 支持 2D 和 3D 图像的绘制,并且应用领域非常广泛,基本上涵盖了 Web 图形 / 图像、视频、动画等领域。我们在网页中经常见到的统计图表、视频应用、网页游戏等等,都是由它来实现的。

基本概念和原理

在深入讲解 Canvas 之前,我们先来了解一些基础概念和原理。对于这些基础概念的理解,将会为你学习后面的知识点打下坚实的基础。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Canvas元素是HTML5新增的一个重要元素,可以用于绘制各种图形和图像。本文介绍了Canvas元素的基本概念和原理,以及图形/图像渲染的基本原理。通过讲解2D和3D图像的区别、矢量图和非矢量图的概念,以及图形/图像渲染的基本原理,为读者打下了坚实的基础。文章还详细介绍了Canvas的实现原理,包括CanvasRenderingContext2D类和WebGLRenderingContext类的作用,以及Skia库和OpenGL与WebGL的关系。通过具体的例子,展示了如何通过Canvas元素绘制图形,以及浏览器兼容性适配的相关内容。总之,本文深入浅出地介绍了Canvas元素的原理和相关技术,为读者理解WebRTC使用Canvas绘制统计图表奠定了基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • tokamak
    思考题回答:(1)H.264视频解码后通常是YUV420P格式,可以把YUV转成RGBA,调用Canvas的2D上下文接口来逐帧显示视频。(2)或者调用Canvas的webgl上下问,直接渲染YUV数据,也可显示视频。参考案例:https://github.com/v354412101/wsPlayer

    作者回复: 赞!

    2019-08-22
    15
  • flying LP
    有关于渲染的疑惑请老师指导下: 1.理解下来感觉渲染的输出就是非矢量图,类似yuv/rgb格式的像素位图,从而可以让显示器可以直接显示;而音视频通话中播放端解码后都是如yuv的一帧帧图像,应该可以直接显示;那解码后还有渲染的环节吗,作用又是什么? 2.了解到如云游戏这种实时视频传输是通过传送图形指令实现的,如果传送的是纯图形指令,就不需要编解码的环节,而是这样的流程吗:发端视频采集--发端绘图指令--收端解指令--渲染--显示? 新手接触,烦请不吝指导!

    作者回复: 无论是视频还是图片最终都是一帧一帧的图像放到屏幕上显示,所以都有渲染问题。所谓的渲染问题就是如何更高效的,更快速的将图像显示出来。一般情况下我们都使用 GPU加速渲染。 对于你说的第二个问题,你想你是理解错了,目前的视频还无法通过几条指令就可以将原图复原,像Google都做不到,我觉得你应该对这家公司的技术再做一些深入了解。

    2020-06-14
    2
    2
  • 许童童
    思考题: 可以通过canvas来解析渲染二进制流,根据视频的编码方式,选择相应的解码方式即可。 这一节讲的内容还是挺基础的,不过正好复习一下。
    2019-08-22
    4
  • LWP
    纯干货,清晰易懂,点赞
    2020-02-25
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部