我想获取programDateTime,它是浏览器中的时间戳,用于测量HLS的延迟时间。我知道如何在台式机版本的Chrome和Safari上获取它。但是,无法通过iOS Safari来获得它。你知道什么好方法吗?
以下是如何使用hls.js获取programDateTime。但是,由于iOS本身会播放hls,因此无法使用此方法。
hls.on(Hls.Events.FRAG_CHANGED, function(id, data){
if (data.frag._url) {
console.log('data',data)
if (data.frag.programDateTime){
var progaramDateTime = data.frag.programDateTime;
} else {
// for macOS Safari
var rawProgaramDateTime = data.frag.tagList[2][1];
rawProgaramDateTime = rawProgaramDateTime.slice(0, -2) + ":" + rawProgaramDateTime.slice(-2);
var progaramDateTime = Date.parse(rawProgaramDateTime);
}
programDateTimeArray.push(progaramDateTime);
console.log('programDateTimeArray',programDateTimeArray)
if (programDateTimeArray.length == 5){
programDateTimeArray.shift();
chunkTime = programDateTimeArray[3] - programDateTimeArray[0];
}
var programDateTime = progaramDateTime - chunkTime - 2000;
mcDelayTime = getCurrentTime() - programDateTime;
console.log(data.frag._url, mcDelayTime+"ミリ秒遅延しています");
}
});
最佳答案
在Safari上进行本地HLS回放时,可以使用以下方法:
https://developer.apple.com/documentation/webkitjs/htmlmediaelement/1634352-getstartdate
如果HLS流中有一个程序日期时间,则第一个时间将存储为此方法返回的日期。
从那里,您应该能够将其与视频元素currentTime属性结合起来以获取当前节目的日期时间。使用这两个值,您应该能够以类似的方式测量延迟时间。
关于javascript - 如何在iOS Safari上的hls中获取programDateTime?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57302098/