这是我参与「第四届青训营 」笔记创作活动的第7天
Web多媒体历史
- flash插件
- HTML5原生自带音视频标签
- Media Source
基础知识
- 编码格式
- 要解决的问题:
- 空间冗余
- 时间冗余
- 编码冗余
- 视觉冗余
- 编码数据处理流程
- 预测--去除空间冗余、时间冗余
- 变换--去除空间冗余
- 量化--去除视觉冗余
- 熵编码--去除编码冗余
- 要解决的问题:
- 封装格式--存储音视频、图片或者字幕信息的一种容器
- 多媒体元素和扩展API
- video
- audio
audio&video元素缺陷- 不支持直接播放hls、flv等视频格式
- 视频资源的请求和加载无法通过代码控制
- 分段加载(节约流量)
- 清晰度无缝切换
- 精确预加载
- 媒体扩展源API--MSE(Media Source Extensions)
- 优点:
- 无插件在web端播放流媒体
- 支持播放hls、flv、mp4等格式视频
- 可实现视频分段加载、清晰度无缝切换、自适应码率、精确预加载
- 使用过程
- 创建mediaSource实例
- 创建指向mediaSource的URL
- 监听sourceopen事件
- 创建sourceBuffer
- 向sourceBuffer中加入数据
- 监听updateend事件
- 播放器播放流程
- 数据加载:ts、flv、mp4
- 解封装:音频裸流、视频裸流
- 重封装:fmp4
- appendBuffer:video、audio
- 解码渲染:音频解码、视频解码
- 音视频同步:时间戳
- 优点:
- 流媒体协议 HLS全称是HTTP Live Streaming,是一个由Apple公司提出的基于HTTP的媒体流传输协议,用于实时音视频流的传输。目前HLS协议被广泛的应用于视频点播和直播领域。
应用场景
- 点播
- 直播
- 图片
- 云游戏
- 实时通信
- 视频编辑
新技术标准
- Webassembly:PC端使用265视频编码
- WebCodecs:前端对数据音频视频实现编码解码
- WebGPU:底层应用绘图暴露接口
- WebVP、WebXR