我们使用的是一个音频播放器,它使用hls.js库来播放hls格式的广播实况流。我们正在尝试实现一个功能,允许我们的用户在直播流中跳回到某个时间点(歌曲的开始时间)。从过去两小时内播放的每首歌曲,我们可以获得该歌曲的开始时间作为UTC时间戳。由于hls.js似乎没有提供任何实用方法来直接查找某个utc时间戳的位置,因此我们尝试找出其他方法来计算流中的该点。
我们的想法是找出当前正在播放的流的utc时间戳,使用此时间戳来计算流中的livetime与我们想要跳转到的歌曲的开始时间之间的秒数差,并将该差值添加到流中播放器的当前位置(我们将此位置作为流在两小时时间窗口中播放的秒数的时间)。但不幸的是,我们只能设法找出流中当前播放的片段的开始时间,但无法找到流在片段中实际播放的确切时间点。由于我们的碎片持续时间为5秒,因此我们对跳转位置的计算并不那么精确。
有没有人知道如何通过hls.js获取当前正在播放的实时流的确切时间戳?例如,在Android上使用exoplayer,可以在HLSManifest类的帮助下计算直播流中当前位置的协调世界时时间戳。该类提供了一个方法,该方法随时返回已配置的hls时间窗口的起始点的utc时间戳。通过在该时间窗口中添加当前位置的时间(以秒为单位),可以很容易地计算出流在某个时间点的确切utc时间戳。
任何帮助,即使是关于如何使用hls.js的最小提示,也是非常感谢的。提前谢谢。
发布于 2020-07-22 18:52:51
你能解决这个问题吗?我可以为MPD (DASH)实现这一点,但不能为MPD的M3U8 (HLS)实现,使用下面的标记来实现相同的效果。
保持视频点播
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">https://stackoverflow.com/questions/59065532
复制相似问题