同步回放

最近更新时间:2022-09-20 05:17:40

功能描述

目前市场上很多应用需要将录制的视频与其他数据流文件(白板,课件,直播录像,网上课堂等)同步回放,从而还原原先预设好的场景。你可以通过云端录制提供的录制开始时的时间戳,将录制的视频与其他数据流文件同步回放。

前提条件

单流录制模式下,云端录制会将每路流的音频和视频分开录制。在同步回放前,你需要先通过音视频合并转码脚本将音频和视频合并成一个视频文件。转码步骤详见音视频文件合并

获取时间戳

你可以通过云端录制 RESTful API 回调来获取录制开始时的时间戳。 通过 recorder_slice_start 事件中的 startUtcMs

你需要联系技术支持开通回调服务。详情见开通回调服务

你也可以通过解析 M3U8 文件来获取录制开始时间。

  1. 获取 M3U8 文件:你需要在第三方云存储的录制文件存储位置中找到 M3U8 文件。通过文件的命名规则,可以找到本次录制对应的 M3U8 文件。
  • 合流录制模式下,M3U8 文件名由录制 ID 和频道名组成,如 sid_cname.m3u8
  • 单流录制模式下,M3U8 文件的命名规则详见单流录制
  1. 解析 M3U8 文件,获取时间戳:每个 M3U8 文件的开头都包含该次录制的开始时间,如:
#EXT-X-ANYRTC-TRACK-EVENT:EVENT=START,TRACK_TYPE=AUDIO,TIME=1234567891314

其中 TRACK_TYPE 表示该次录制的类型,TIME 值即为该路流开始录制的时间。TIME 为 Unix 时间戳,单位为 ms。如果用户在录制过程中退出并重新加入,M3U8 文件中会可能会出现多个时间戳。在此种情况下,第一次出现的 TIME 值为本次录制的开始时间。

如果单流录制中同一个 UID 的音频和视频开始时间不一致,则取两个时间中较早的时间作为本次录制开始时间。

场景举例

单流模式

假设有甲、乙、丙、丁 四个用户,先后加入同一频道。单流模式下,每个 UID 生成两个 M3U8 文件和多个 TS 文件。通过音视频合并转码脚本转码后,每个 UID 生成一个 MP4 文件。通过将这四个 MP4 文件与其他数据流文件按同一时间轴播放,便可实现同步回放。

合流模式

假设有甲、乙、丙、丁 四个用户,先后加入同一频道。合流模式下,整个频道生成一个 M3U8 文件和多个 TS 文件,包含四个用户的所有音视频数据。因此,只需通过 RESTful API 回调或解析 M3U8 文件获取本次录制开始时的时间戳,便可以将 TS 文件和其他数据流文件按同一时间轴播放,实现同步回放。