HTML 5 直播之Media Source Extension

一 概述

Media Source Extension允许 JavaScript 动态构造用于 <音频> 和 <视频> 的媒体流。它定义了一个 MediaSource 对象,该对象可以用作 HTMLMediaElement 的媒体数据源。MediaSource 对象具有一个或多个源缓冲区对象。应用程序将数据段追加到SourceBuffer对象,并可以根据系统性能和其他因素调整附加数据的质量。来自SourceBuffer 对象的数据作为解码和播放的音频、视频和文本数据的跟踪缓冲区进行管理。这些扩展使用的字节流规范可在字节流格式注册表中提供 [MSE-REGISTRY]。

1.1目标

此规范的设计符合以下目标:

  • 允许 JavaScript 构造媒体流,与获取媒体进行访问时无关。
  • 定义拼接和缓冲模型,以方便自适应流、广告插入、时间转换和视频编辑等用例。
  • 最大限度地减少 JavaScript 中对媒体分析需求。
  • 尽可能多地利用浏览器缓存。
  • 提供字节流格式规范的要求。
  • 不需要支持任何特定的媒体格式或编解码器。

此规范定义:

  • 用户代理的规范行为,用于在处理媒体数据时实现用户代理和 Web 应用程序之间的互操作性。
  • 使其他规范能够定义要在此规范中使用的媒体格式的规范要求。

1.2定义

活动轨道缓冲区

为 提供和 的编码帧的轨道缓冲区。所有这些轨道都与列表中的源缓冲区对象关联。enabledaudioTracksselectedvideoTracks"showing""hidden"textTracksactiveSourceBuffers

追加窗口

用于在追加时筛选出编码帧的表示时间戳范围。追加窗口表示单个连续时间范围,具有单个开始时间和结束时间。允许将具有此范围内的表示时间戳的编码帧追加到 SourceBuffer 中,而筛选出此范围外的编码帧。追加窗口的开始和结束时间分别由 和 属性控制。appendWindowStartappendWindowEnd

编码框架

具有表示时间戳、解码时间戳和编码帧持续时间的媒体数据单元

编码帧持续时间

编码框架的持续时间。对于视频和文本,持续时间指示视频框架或文本的显示时间。对于音频,持续时间表示编码帧中包含的所有样本的总和。例如,如果音频帧包含 441 个@44100Hz帧持续时间为 10 毫秒。

编码帧结束时间戳

编码帧表示时间戳及其编码帧持续时间的总和。它表示紧跟编码帧的表示时间戳。

编码帧组

一组相邻且具有单调增加解码时间戳且没有任何间隙的编码帧。编码帧处理算法检测到的不连续性和调用将触发新的编码帧组的开始。abort()

解码时间戳

解码时间戳指示帧需要解码的最新时间,假设此帧和任何相关帧的瞬时解码和渲染(这等于最早帧的表示时间戳,按表示顺序,取决于此帧)。如果帧可以按表示顺序解码,则解码时间戳必须存在于字节流中或可从字节流派生。如果情况并非如此用户代理必须运行追加错误算法。如果帧无法按表示顺序解码,并且字节流中不存在解码时间戳,则解码时间戳等于表示时间戳

初始化段

包含解码一系列媒体段所需的所有初始化信息的字节序列。这包括编解码器初始化数据、多路复用段的轨道 ID 映射和时间戳偏移(例如编辑列表)。

媒体细分

包含部分媒体时间线的分组和时间戳媒体数据的字节序列。媒体段始终与最近追加的初始化段关联

媒体源对象 URL

MediaSource 对象 URL 是 创建的唯一Blob URI [FILE-API]。它用于将MediaSource 对象附加到 HTMLMediaElement。createObjectURL()

这些 URL 与 Blob URI 相同,只不过该功能定义中引用文件和 Blob 对象的内容特此扩展为也应用于MediaSource对象。

MediaSource对象 URL 的源是调用 期间的相关设置对象。thiscreateObjectURL()

父媒体源

源缓冲区对象的父媒体源是创建该对象的 MediaSource对象。

演示文稿开始时间

演示文稿开始时间是演示文稿中最早的时间点,并指定初始播放位置和最早可能的位置。使用此规范创建的所有演示文稿的演示文稿开始时间为 0。

演示间隔

编码帧的表示间隔是从其表示时间戳表示时间戳以及编码帧的持续时间的时间间隔。例如,如果编码帧的表示时间戳为 10 秒,编码帧持续时间为 100 毫秒,则表示间隔为 +10-10.1)。请注意,范围的开始是包含的,但范围的末尾是独占的。

演示顺序

在演示文稿中呈现编码帧的顺序。表示顺序是通过按其表示时间戳单调地增加顺序来订购编码帧实现的

演示文稿时间戳

对演示文稿中特定时间的引用。编码框架中的表示时间戳指示应渲染的时间。

随机接入点

媒体段中无需依赖段中任何先前数据即可开始解码和连续播放的位置。对于视频,这往往是 I 帧的位置。对于音频,大多数音频帧可以被视为随机访问点。由于视频轨道往往具有更稀疏的随机访问点分布,因此这些点的位置通常被视为多路复用流的随机访问点。

源缓冲区字节流格式规范

描述SourceBuffer 实例接受的字节流的格式的特定字节流格式规范。SourceBuffer 对象的字节流格式规范是根据传递给创建对象的调用的来选择。typeaddSourceBuffer()

源缓冲器配置

分布在单个MediaSource实例拥有的一个或多个SourceBuffer对象上的特定轨道集。

实现必须支持至少 1个 MediaSource对象,具有以下配置:

  • 具有 1 个音轨和/或 1 个视频轨道的单个源缓冲区。
  • 两个源缓冲区,一个处理单个音轨,另一个处理单个视频轨道。

MediaSource对象必须支持上述每个配置,但它们一次只需要支持一个配置。一次支持多个配置或附加配置是实现质量问题。

曲目描述

为单个轨道提供轨道 ID、解码器配置和其他元数据的字节流格式特定结构。单个初始化段内的每个轨道描述都有一个唯一的轨道 ID。如果跟踪id 在初始化段中唯一,则用户代理必须运行追加错误算法

轨道 ID

轨道 ID 是一个字节流格式特定标识符,它将字节流的部分标记为特定轨道的一部分。轨道描述中的"轨道 ID"标识媒体段的哪些部分属于该轨道。

 

文章源自 https://www.w3.org/TR/media-source/#mediasource

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值