如何为媒体创建子剪辑
你可能希望观看者仅播放视频的一部分。 可以通过多种方式实现此目的:
- 使用资产筛选器。
- 使用 SDK 针对输出资产提交带有标准编码器的子剪辑作业。
先决条件
使用资产筛选器时:
- 阅读筛选器一文以了解什么是筛选器。
- 阅读使用动态打包器筛选清单以了解:
设置输出资产时:
- 创建输出资产。 可以:
- 使用 OBS 快速入门或首选方法创建实时事件和实时事件输出,或者
- 上传一个包含视频的媒体文件,该视频的开头和末尾各有 5 秒钟的片段将被省略;然后通过编码作业运行该文件。 在本练习中使用从作业创建的输出资产。
- 如果使用实时事件,请运行实时事件 2 分钟左右,然后停止。 你将使用实时事件输出资产。
- 阅读本文的剩余内容。
资产筛选器示例
可以使用门户创建资产筛选器,以限制呈现给查看者的内容。 对于此示例,你将使用一个筛选器来筛选掉视频开头和末尾的时间段。
假设媒体的整个长度为 2 分钟(120 秒)。 开头显示一些时长为 5 秒的预生产测试,末尾显示时长为 5 秒的“感谢观看”动画。
由于你要排除该视频的开头和末尾部分,因此开头与末尾值之间的值即是要用于开始时间戳 (6) 和结束时间戳 (114) 的值。
在门户中创建资产筛选器
- 登录到门户。
- 导航到所使用的媒体服务帐户。
- 选择“资产”。
- 选择实时事件的输出资产。
- 选择“添加资产筛选器”。 此时会显示资产筛选器屏幕。
- 在“资产筛选器名称”字段中,输入资产筛选器的名称。 使用 5offbegend 之类的内容来提醒自己要向观看者传递哪个筛选器。
- 在“时间刻度”字段中,将值更改为 1。
- 在“开始时间戳”字段中,输入开始时间戳 0。
- 在“结束时间戳”字段中,输入 114。
- 选择“保存”。 该筛选器将显示在“资产筛选器”列表中。
创建流式处理定位符
播放器客户端将在资产请求的查询字符串中使用该筛选器。 若要创建 URL,请创建一个流式处理定位符。
- 在同一屏幕上,选择“+ 新建流式处理定位符”。 此时会显示流式处理定位符屏幕。
- 在“名称”字段中,将流式处理定位符名称更改为 5offbegend-loc,或可让你知道已将哪个筛选器用于流式处理定位符的内容。
- 从“筛选器”下拉列表中,选择刚刚创建的筛选器。
- 选择 添加 。 当播放器客户端请求流式处理定位符时,将使用该筛选器。
测试筛选器
- 复制或获取 (GET) 适合播放器的流式处理定位符 URL。
- 使用播放器客户端或 Azure Media Player 测试流式处理定位符。 应该只会播放视频中从第 6 秒到第 115 秒的内容。
SDK 示例
分叉或下载适用于 Node.JS 或 Python 的“将实时存档编码为 MP4”示例。
查看创建子剪辑作业的代码部分:
- 若要创建子剪辑作业,请先按属性选择轨道,从编码输出资产或实时事件输出存档资产(也称为存档)中选择比特率最高的视频。
// Use this to select the top bitrate from the live archive asset
// The filter property allows you to select tht "Top" bitrate which would be the highest bitrate provided by the live encoder.
let videoTrackSelection: SelectVideoTrackByAttribute = {
odataType:"#Microsoft.Media.SelectVideoTrackByAttribute",
attribute: KnownTrackAttribute.Bitrate,
filter: KnownAttributeFilter.Top // use this to select the top bitrate in this ABR asset for the job
}
- 将时间戳的开始和结束范围添加到轨道选择内容中。
// Create a job input asset that points to the live event archive to be packaged to MP4 format.
// This is where we set up the track selection and optionally set a clip trimming on the live event to clip off start and end positions.
let input = factory.createJobInputAsset({
assetName: inputArchiveName,
start: {
odataType:"#Microsoft.Media.AbsoluteClipTime",
time: "PT30S" // Trim the first 30 seconds off the live archive.
},
end : {
odataType:"#Microsoft.Media.AbsoluteClipTime",
time: "PT5M30S" // Clip off the end after 5 minutes and 30 seconds.
},
inputDefinitions: [
factory.createFromAllInputFile({
includedTracks: [
videoTrackSelection // Pass in the SelectVideoTrackByAttribute object created above to select only the top video.
]
})
]
})
- 作业完成后,为输出资产创建一个流式处理定位符,获取适合播放器客户端的 URL 并对其进行测试。