Web多媒体初识篇 | 青训营笔记

159 阅读4分钟

Web多媒体初识篇 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第14天。

多媒体发展

  • Flash:音视频依赖于flash插件

    • iOS不支持flash, falsh开始走下坡路
  • Html5:<video>,<audio>标签原生支持音视频,但功能也有限(视频格式有限制,状态检测不到)

  • Media Source Extensions:扩展API实现Html5的不足之处

什么是Web多媒体技术

随着近几年抖音,快手,B站等音视频APP走进千家万户,丰富我们的娱乐生活,音视频技术的发展和学习也掀起来一波新的热潮,在业务需求的推动下,Web产品的音视频技术也是得到了很大的发展和突破。

Web前端

交互体验、前端工程化、跨端能力...

数字对媒体

音视频原理、封装容器、编解码算法...

Web多媒体技术主要分为以下几个方向:

image.png

  • 点播

主要分为短视频,中视频,长视频。

  • 直播

在现场通过设备采集现场的音视频数据,把这些数据推送到服务端,服务端进行处理,然后用他的客户端拉取直播流去观看直播。

  • 图片

我们需要对图片的下发,下载的网络链路进行监控,诊断,不同的图片的格式在不同浏览器下是不一样的,比如webp文件在safari浏览器不显示的,然后web多媒体工程师需要对webp文件进行解码,最终显示在safari浏览器中。

  • 实时通信

提供高质量低延迟的音视频数据通信能力,主要是应用在视频会议,在线教育还有一些互动娱乐的场景里面。

  • 云游戏

游戏运行在服务端,降低了客户端硬件要求。

  • 视频剪辑

在web端进行音视频的编辑,不需要在自己的编辑软件里操作。

以上内容来自:链接:juejin.cn/post/700072…,作者:Jser阿武

基础概念

编码格式

图像基本概念

  • 图像分辨率:同于确定组成一幅图像的像素数据,指水平和垂直方向上图像所具有的像素个数
  • 图像深度:存储每个像素所需要的比特数

视频基本概念

  • 分辨率:每一帧的图像分辨率
  • 帧率:视频单位时间内包含的视频帧数的数量
  • 码率:视频单位时间内传输的数据量,一般用kbps(千位每秒)来表示

为什么要编码?

为了节省空间!!!

image.png

  • 空间冗余
  • 时间冗余
  • 编码冗余
  • 视觉冗余

处理数据流程

image.png

封装格式

封装格式:存储音视频/图片/字幕信息的一种容器

我们将这个视频通过编码器编码后得到的是裸流,比如使用264编码器,得到的就是264裸流,如果直接播放264裸流的话,就必须从头到尾播放,我们是无法进行操作的,所以我们需要把这个音视频的裸流包装一下,放在固定格式的文件里面,这种固定文件就叫做音视频的容器。

image.png

多媒体元素和扩展API

<video>标签

image.png

<audio>标签

image.png

image.png

image.png

image.png

image.png

<audio><video>元素缺陷

  • 不支持直接播放his/flv等视频格式

  • 视频资源的请求和加载无法通过代码控制

    • 分段加载(节约流量)
    • 清晰度无缝切换
    • 精确预加载

媒体源扩展API (Media Source Extensions)

  • 无插件在web端播放流媒体
  • 支持播放his、flv、MP4等格式视频
  • 可实现视频分段加载。清晰度无缝切换、自适应码率、精确预加载等

使用步骤:

  1. 创建mediaSource实例
  2. 创建指向mediaSource的URL
  3. 监听sourceopen事件
  4. 创建sourceBuffer
  5. 乡sourceBuffer中加入数据
  6. 监听updataend事件

image.png

播放器播放流程

image.png

流媒体协议

image.png

HLS全称是TTP Live Streaming,是一个由Apple公司提出的基于HTTP的媒体流传输协议,用于实时音视频流的传输。目前HLS协议被广泛的应用于视频点播和直播领域。

RTMP是Flash时期使用的协议。

image.png

总结

多媒体从flash发展到H5再到MSE,与之对应的编码格式、封装格式、多媒体元素也发生技术提升,现行技术标准包括Webassembly、WebCodes、WebGPU、WebVR、WebXR都在不断涌现出来。

W3C音视频技术新标准

  • WebCodecs 更高效的能够调用浏览器音视频编解码能力的API
  • WebGPU 在Web端调用这个底层GPU图形计算的能力
  • WebVR、WebXR 给虚拟现实,增强现实这些设备提供渲染的能力

参考博客: