0

短的

我想使用 PTS 向流媒体视频播放器添加时间转换,但不知道应该如何正确地进行从单位到秒的转换。

我正在尝试使用hls.js制作一个简单的流媒体视频播放器,我想在浏览器播放器中显示实际流媒体开始时间和用户连接到流媒体的时间之间的差异。例如 - 一个流媒体视频持续 2 分 15 秒,如果现在用户打开我的播放器,它应该显示的不是“0 - 36”(36 - 是几个已经上传的片段的时间),而是“2:15 - 2:51 ”。简单地说,我想为视频播放器添加一个时移。由于它是 MPEG-ts,它在连接到 90khz 时钟的 PES 标头中包含 PTS。在 hls.js 中已经完成了从数据包中获取 PTS的工作。因此,在检查和按位操作之后,应该很容易设置新的 var 等于 PTS并将新 var 从单位转换为秒。还有我的问题 - 我不知道如何以正确的方式进行转换。我试图将得到的 PTS 划分为 90000,但结果值大于 1.46 秒的视频时间,并且随着视频持续时间的增加而增长(我检查了长达 2.5 小时的视频,在视频结束时它比实际视频时间长了大约 6 秒)。在这种情况下,我认为由于除法,我总是会在 1 秒内得到一个大于真实值的值 - 可以通过在代码中减 1 来设置拐杖。但这并不能解决增长时间的问题。

从一开始它就给了我:

PTS = 132000

接下来我尝试将其除以 90khz:

132000/90000 = 1,466666667 sec

请帮助我,我做错了什么?

4

1 回答 1

0

除以 90000 是正确的,但文件不是从 PTS 0 开始。您需要从当前 PTS 中减去视频的第一个 PTS,然后再除。

于 2019-09-29T03:15:49.887 回答