筛选器
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
将内容传送到客户(实时传送视频流事件或点播视频)时,客户端所需的灵活性可能比默认资产的清单文件中描述的灵活性更高。 Azure 媒体服务根据预定义的筛选器提供动态清单。
筛选器是服务器端的规则,可让客户执行以下操作:
- 仅播放视频的某个部分(而不是整个视频)。 例如:
- 缩小清单以显示直播活动的子剪辑(“子剪辑筛选”),或
- 修剪视频开头(“修剪视频”)。
- 只传送内容播放设备所支持的指定再现内容和/或指定的语言轨道(“再现内容筛选”)。
- 调整演播窗口,以便在播放器中提供长度有限的 DVR 窗口(“调整演播窗口”)。
使用媒体服务可为内容创建帐户筛选器和资产筛选器。 此外,可将预先创建的筛选器关联到流定位符。
筛选器类型
有两种类型的筛选器:
帐户筛选器和资产筛选器类型的用于定义/描述筛选器的属性完全相同。 需要指定要与筛选器关联的资产名称,但创建资产筛选器时除外。
根据具体的方案确定哪种类型的筛选器更合适(资产筛选器或帐户筛选器)。 帐户筛选器适用于设备配置文件(再现内容筛选),而资产筛选器可用于修剪特定的资产。
使用以下属性来描述筛选器。
名称 | 说明 |
---|---|
firstQuality | 筛选器的第一个质量比特率。 |
presentationTimeRange | 实时事件清单的演示时间范围。 此属性用于筛选清单起点/终点、呈现窗口长度和直播起始位置。 有关详细信息,请参阅 PresentationTimeRange。 |
tracks | 轨迹选择条件。 有关详细信息,请参阅轨迹 |
presentationTimeRange
请将此属性用于资产筛选器。 不建议对帐户筛选器设置该属性。
“属性” | 说明 |
---|---|
startTimestamp | 适用于点播视频 (VoD) 或实时传送视频流。 这是一个长值,表示流的绝对起点。 该值将舍入为最接近的下一个 GOP 起点。 单位是时间刻度,startTimestamp 150000000 表示 15 秒。 使用 startTimestamp 和 endTimestamp 来修剪将播放列表(清单)中的片段。 例如,在使用默认时间刻度的情况下指定 startTimestamp=40000000 和 endTimestamp=100000000 会生成一个播放列表,其中包含 VoD 演播内容第 4 秒到第 10 秒的片段。 如果某个段跨越边界,则整个段将包含在清单中。 |
endTimestamp | 适用于点播视频 (VoD)。 对于实时传送视频流演播,将以静默方式忽略该属性;当呈现内容结束并且流变为 VoD 时,将应用该属性。 这是一个长值,表示演播的绝对终点,舍入为最接近的下一个 GOP 起点。 单位是时间刻度,endTimestamp 1800000000 表示 3 分钟。 使用 startTimestamp 和 endTimestamp 来修剪将播放列表(清单)中的片段。 例如,在使用默认时间刻度的情况下指定 startTimestamp=40000000 和 endTimestamp=100000000 会生成一个播放列表,其中包含 VoD 演播内容第 4 秒到第 10 秒的片段。 如果某个段跨越边界,则整个段将包含在清单中。 |
timescale | 适用于演播时间范围内的所有时间戳和持续时间,指定为一秒中的增量数。 默认值为 10000000 - 一秒中有 1000 万个增量,每个增量的长度为 100 纳秒。 但是,该值可能会有所不同,具体取决于视频源,或者如果使用的是云中编码的实时事件,该值也会不同(默认值为 90Khz,或者视频为 90000。) 例如,若要将 startTimestamp 设置为 30 秒,则在使用默认时间刻度时,需使用值 300000000。 请务必检查资产清单,以确认视频轨道的时间刻度是否位于所设置范围中。 使用编码的实时事件时,视频轨道的时间刻度可以为 90Khz (90000),而音频轨道的时间刻度可以为 48khz (48000)。 |
liveBackoffDuration | 仅适用于实时传送视频流。 此值定义客户端可以搜寻的最新实时位置。 使用此属性可以延迟直播播放位置,并为播放器创建服务器端缓冲区。 此属性的单位为时间刻度(参阅下文)。 最大直播回退持续时间为 300 秒 (3000000000)。 例如,值 2000000000 表示最新可用内容从实际实时边缘延迟 20 秒。 |
presentationWindowDuration | 仅适用于实时传送视频流。 使用 presentationWindowDuration 对要包含在播放列表中的片段应用滑动窗口。 此属性的单位为时间刻度(参阅下文)。 例如,设置 presentationWindowDuration=1200000000 会应用 2 分钟的滑动窗口。 直播边缘 2 分钟内的媒体将包含在播放列表中。 如果某个段跨越边界,则整个段将包含在播放列表中。 最小呈现窗口持续时间为 60 秒。 |
forceEndTimestamp | 仅适用于实时传送视频流。 指示 endTimestamp 属性是否必须存在。 如果为 true,则必须指定 endTimestamp,否则会返回“错误的请求”代码。 允许的值:false、true。 |
轨迹
指定筛选器轨迹属性条件 (FilterTrackPropertyConditions) 的列表,应该根据该列表将流(实时传送视频流或点播视频)的轨迹包含到动态创建的清单中。 使用逻辑 AND 和 OR 运算来组合筛选器。
筛选器轨迹属性条件描述轨迹类型、值(如下表所述)和运算(Equal、NotEqual)。
名称 | 说明 |
---|---|
Bitrate | 使用轨迹的比特率进行筛选。 最佳值为一系列比特率,以比特/秒为单位。 例如“0-2427000”。 注意:尽管可以使用特定的比特率值(例如 250000 比特/秒),但不建议使用此方法,因为确切的比特率可能根据资产的不同而波动。 |
FourCC | 使用轨迹的 FourCC 值进行筛选。 该值是 RFC 6381 中指定的编解码器格式的第一个元素。 目前支持以下编解码器: 视频:“avc1”、“hev1”、“hvc1” 音频:“mp4a”、“ec-3” 若要确定资产中轨迹的 FourCC 值,请获取并检查清单文件。 |
语言 | 使用轨迹的语言进行筛选。 该值是 RFC 5646 中指定的、要包含的语言的标记。 例如,“en”。 |
名称 | 使用轨迹的名称进行筛选。 |
类型 | 使用轨迹的类型进行筛选。 允许以下值:“video”、“audio”或“text”。 |
示例
以下示例定义实时传送视频流筛选器:
{
"properties": {
"presentationTimeRange": {
"startTimestamp": 0,
"endTimestamp": 170000000,
"presentationWindowDuration": 9223372036854776000,
"liveBackoffDuration": 0,
"timescale": 10000000,
"forceEndTimestamp": false
},
"firstQuality": {
"bitrate": 128000
},
"tracks": [
{
"trackSelections": [
{
"property": "Type",
"operation": "Equal",
"value": "Audio"
},
{
"property": "Language",
"operation": "NotEqual",
"value": "en"
},
{
"property": "FourCC",
"operation": "NotEqual",
"value": "EC-3"
}
]
},
{
"trackSelections": [
{
"property": "Type",
"operation": "Equal",
"value": "Video"
},
{
"property": "Bitrate",
"operation": "Equal",
"value": "3000000-5000000"
}
]
}
]
}
}
在创建流式处理定位符时筛选 HLS 或 DASH 清单
媒体服务允许你创建一个流式处理定位符,该定位符是通过传入到流式处理定位符实体上筛选器属性中的筛选器集合来预先筛选的。 这样,就可以在流式处理定位符上预筛选所有清单。 此流式处理定位符不再提供原始清单,从筛选的流式处理定位符请求 DASH 或 HLS 的 URL 的客户端只能访问筛选后的响应。 如果只想发布一部分资产,并且通过操作 HLS 或 DASH 清单 URL 的查询字符串,防止用户访问资产的完整原始清单,则这会很有用。
可以在流定位符中指定资产或帐户筛选器列表。 动态打包器将此筛选器列表与客户端在 URL 中指定的筛选器一起应用。 此组合将生成动态清单,该清单基于你在流定位符上指定的“URL + 筛选器”中的筛选器。
更新筛选器
筛选器和流式处理定位符可以实时更新,但请记住,在前端 Web 服务器上进行的任何更新可能需要长达 10 秒的时间,如果更新已发布并已在生产中使用的同一流式处理定位符,则可能会出现问题。
不建议更新与实际发布的流定位符关联的筛选器的定义。 流式处理服务器可能有内部缓存,这可能会导致返回过时的缓存数据。
如果需要更改筛选器定义,请考虑创建一个新的筛选器,并将其添加到流定位符 URL,或发布直接引用已更新筛选器的唯一新流定位符。