Hls.js将视频PTS从单位转换为秒

时间:2019-09-28 20:06:32

标签: javascript video-player mpeg2-ts pts hls.js

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

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

从一开始它就给我:

PTS = 132000

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

132000/90000 = 1,466666667 sec

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

1 个答案:

答案 0 :(得分:0)

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