我想获取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/

10-11 03:40