我想获取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 上进行 native HLS 播放时,您可以使用此方法: https://developer.apple.com/documentation/webkitjs/htmlmediaelement/1634352-getstartdate
如果 HLS 流中存在节目日期时间,则第一个时间将存储为此方法返回的日期。
从那里,您应该能够将其与视频元素 currentTime 属性结合起来以获取当前节目日期时间。有了这两个值,您应该能够以类似的方式测量延迟时间。
关于javascript - 如何在ios safari上的hls中获取programDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57302098/