如何通过 hls.js 跳转到 hls 流中的具体 UTC 时间戳
Posted
技术标签:
【中文标题】如何通过 hls.js 跳转到 hls 流中的具体 UTC 时间戳【英文标题】:How do I jump to a concrete UTC timestamp in an hls stream via hls.js 【发布时间】:2019-11-27 07:55:41 【问题描述】:我们正在使用一个音频播放器,它使用 hls.js 库来播放 hls 格式的广播直播。我们正在尝试实现一项功能,允许我们的用户在直播中跳转到某个时间点(歌曲的开始时间)。在过去两个小时的时间范围内播放的每首歌曲中,我们都有该歌曲的开始时间作为 UTC 时间戳。由于 hls.js 似乎没有提供任何实用方法来直接寻找某个 utc 时间戳的位置,我们试图找出其他方法来计算流中的那个点。
我们的想法是找出流正在播放的时刻的 utc 时间戳,使用这个时间戳来计算流中的 livetime 和我们想要跳转并添加的歌曲的 starttime 之间的差异(以秒为单位)与播放器在流中的当前位置的差异(我们将这个位置作为流在小时两小时时间窗口中播放的秒数)。但不幸的是,我们只设法确定了流中当前播放片段的开始时间,但未能找到流在片段中实际播放的确切时间点。由于我们有 5 秒的片段持续时间,因此我们对跳跃位置的计算并不那么精确。
有人知道如何通过 hls.js 获取当前正在播放的直播的确切 utc 时间戳吗? 例如,在带有 exoplayer 的 android 上,可以借助 HLSManifest 类计算直播中当前位置的 utc 时间戳。该类提供了一种方法,可以随时返回配置的 hls 时间窗口起点的 utc 时间戳。通过在该时间窗口中添加当前位置的时间(以秒为单位),我们可以轻松计算流在某个时间点的确切 utc 时间戳。
感谢任何帮助,即使是关于如何使用 hls.js 的最小提示。提前致谢。
【问题讨论】:
【参考方案1】:你能解决这个问题吗? 我可以为 MPD (DASH) 实现这个,但不能为 M3U8 (HLS) 对于 MPD,使用下面的标签来实现相同的效果。
保持视频点播
type="static"
mediaPresentationDuration="PT2M7.3S"
minBufferTime="PT10.0S">
允许视频仅在特定时间开始
type="dynamic"
minimumUpdatePeriod="PT5S"
suggestedPresentationDelay="PT5S"
availabilityStartTime="2020-07-16T09:23:30Z"
publishTime="2020-07-16T09:23:30Z"
timeShiftBufferDepth="PT20M50.0S"
minBufferTime="PT10.0S">
【讨论】:
以上是关于如何通过 hls.js 跳转到 hls 流中的具体 UTC 时间戳的主要内容,如果未能解决你的问题,请参考以下文章