使用video.js是否可以获取当前HLS时间戳?

使用video.js是否可以获取当前HLS时间戳?,video.js,http-live-streaming,Video.js,Http Live Streaming,我有一个应用程序,它正在嵌入一个实时流。为了应对延迟,我想知道流的当前时间戳是多少,并将其与服务器上的时间进行比较 到目前为止,我测试的是检查视频缓冲时间与视频当前时间之间的差异: player.buffereded()-player.currentTime() 但是,我想将时间与服务器进行比较,为此,我需要获取最后请求的.ts文件的时间戳 所以,我的问题是使用video.js,是否有某种钩子来获取上次请求的.ts文件的时间戳 Video.js版本:7.4.1我已经设法解决了这个问题,但是请记住

我有一个应用程序,它正在嵌入一个实时流。为了应对延迟,我想知道流的当前时间戳是多少,并将其与服务器上的时间进行比较

到目前为止,我测试的是检查视频缓冲时间与视频当前时间之间的差异:

player.buffereded()-player.currentTime()

但是,我想将时间与服务器进行比较,为此,我需要获取最后请求的.ts文件的时间戳

所以,我的问题是使用video.js,是否有某种钩子来获取上次请求的.ts文件的时间戳


Video.js版本:7.4.1

我已经设法解决了这个问题,但是请记住我不记得在哪里找到了这段代码的文档

在我的例子中,我在Angular应用程序中工作,我有一个视频组件,负责使用video.js加载实时流。无论如何,让我们看看一些代码

视频初始化

private videoInit(){
this.player=videojs('video'{
aspectRatio:this.videoStream.aspectRatio,
控制:对,
自动播放:错误,
沉默的:是的,
html5:{
hls:{
覆盖:true
}
}
});
this.player.src({
src:'://some stream url.com',
类型:“应用程序/x-mpegURL”
});
//论视频播放回调
this.player.on('play',()=>{
这个.saveHlsObject();
});
}
保存HLS对象

private saveHlsObject(){
如果(this.player!==未定义){
this.playerls=(this.player.tech()如有).hls;
//获取并同步服务器时间。。。
//请求获取服务器时间。。。
//然后计算差异。。。
this.diff=serverTime.getTime()-this.getVideoTime().getTime();
}
}
获取视频片段的时间戳

//访问播放器的播放列表,获取最后一段并提取时间
//在我的例子中,段的URI是例如:1590763989033.ts
私有getVideoTime():日期{
const targetMedia=this.playerls.playlists.media();
const lastSegment=targetMedia.segments[0];
常量uri:string=lastSegment.uri;
const segmentTimestamp:number=+uri.substring(0,uri.length-3);
返回新日期(时间戳);
}

因此,上面的要点是
getVideoTime
函数。段的时间可以在段URI中找到,因此该函数从段URI中提取时间,然后将其转换为日期对象。老实说,我不知道这个URI格式是HLS的标准格式还是为我连接的特定流设置的格式。希望这有帮助,很抱歉,我没有任何更具体的信息

有答案吗?嗨@Matthijs我会回答我自己的问题,因为答案有点长,不适合这里。