如何为媒体创建子剪辑

你可能希望观看者仅播放视频的一部分。 可以通过多种方式实现此目的:

  1. 使用资产筛选器。
  2. 使用 SDK 针对输出资产提交带有标准编码器的子剪辑作业。

先决条件

使用资产筛选器时:

设置输出资产时:

  1. 创建输出资产。 可以:
    1. 使用 OBS 快速入门或首选方法创建实时事件和实时事件输出,或者
    2. 上传一个包含视频的媒体文件,该视频的开头和末尾各有 5 秒钟的片段将被省略;然后通过编码作业运行该文件。 在本练习中使用从作业创建的输出资产。
  2. 如果使用实时事件,请运行实时事件 2 分钟左右,然后停止。 你将使用实时事件输出资产。
  3. 阅读本文的剩余内容。

资产筛选器示例

可以使用门户创建资产筛选器,以限制呈现给查看者的内容。 对于此示例,你将使用一个筛选器来筛选掉视频开头和末尾的时间段。

假设媒体的整个长度为 2 分钟(120 秒)。 开头显示一些时长为 5 秒的预生产测试,末尾显示时长为 5 秒的“感谢观看”动画。

由于你要排除该视频的开头和末尾部分,因此开头与末尾值之间的值即是要用于开始时间戳 (6) 和结束时间戳 (114) 的值。

在门户中创建资产筛选器

  1. 登录到门户。
  2. 导航到所使用的媒体服务帐户。
  3. 选择“资产”。
  4. 选择实时事件的输出资产。
  5. 选择“添加资产筛选器”。 此时会显示资产筛选器屏幕。
  6. 在“资产筛选器名称”字段中,输入资产筛选器的名称。 使用 5offbegend 之类的内容来提醒自己要向观看者传递哪个筛选器。
  7. 在“时间刻度”字段中,将值更改为 1。
  8. 在“开始时间戳”字段中,输入开始时间戳 0。
  9. 在“结束时间戳”字段中,输入 114。
  10. 选择“保存”。 该筛选器将显示在“资产筛选器”列表中。

创建流式处理定位符

播放器客户端将在资产请求的查询字符串中使用该筛选器。 若要创建 URL,请创建一个流式处理定位符。

  1. 在同一屏幕上,选择“+ 新建流式处理定位符”。 此时会显示流式处理定位符屏幕。
  2. 在“名称”字段中,将流式处理定位符名称更改为 5offbegend-loc,或可让你知道已将哪个筛选器用于流式处理定位符的内容。
  3. 从“筛选器”下拉列表中,选择刚刚创建的筛选器。
  4. 选择 添加 。 当播放器客户端请求流式处理定位符时,将使用该筛选器。

测试筛选器

  1. 复制或获取 (GET) 适合播放器的流式处理定位符 URL。
  2. 使用播放器客户端或 Azure Media Player 测试流式处理定位符。 应该只会播放视频中从第 6 秒到第 115 秒的内容。

SDK 示例

分叉或下载适用于 Node.JSPython 的“将实时存档编码为 MP4”示例。

查看创建子剪辑作业的代码部分:

  1. 若要创建子剪辑作业,请先按属性选择轨道,从编码输出资产或实时事件输出存档资产(也称为存档)中选择比特率最高的视频。
// 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
}
  1. 将时间戳的开始和结束范围添加到轨道选择内容中。
// 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. 
            ]
        })
    ]
})
  1. 作业完成后,为输出资产创建一个流式处理定位符,获取适合播放器客户端的 URL 并对其进行测试。