Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取m3u8标准播放列表的当前段.ts信息?_Javascript_Video.js_Http Live Streaming_M3u8_Fairplay - Fatal编程技术网

Javascript 如何获取m3u8标准播放列表的当前段.ts信息?

Javascript 如何获取m3u8标准播放列表的当前段.ts信息?,javascript,video.js,http-live-streaming,m3u8,fairplay,Javascript,Video.js,Http Live Streaming,M3u8,Fairplay,我们使用videojs.fairplay.js在MAC safari浏览器中播放DRM内容。首先,在播放DRM视频时,我们会得到一个标准播放列表(.m3u8),该列表定义了段堆栈(.ts)。我们需要知道每个片段的信息以及完整的元信息,如(长度、类型、url等)。var video=videojs(“我的视频”); video.on('playing',function(){ log(“视频一直在播放”); var段=获取当前段信息(本); log(segment.uri); }); 函数获取当前

我们使用videojs.fairplay.js在MAC safari浏览器中播放DRM内容。首先,在播放DRM视频时,我们会得到一个标准播放列表(.m3u8),该列表定义了段堆栈(.ts)。我们需要知道每个片段的信息以及完整的元信息,如(长度、类型、url等)。

var video=videojs(“我的视频”);
video.on('playing',function(){
log(“视频一直在播放”);
var段=获取当前段信息(本);
log(segment.uri);
});
函数获取当前段信息(obj,旧段=null){
var target_media=obj.tech().hls.playlists.media();
var snapshot_time=obj.currentTime();
var段;
var分段时间;
//在可用段内巡游,并首先获取快照时间
对于(变量i=0,l=target_media.segments.length;i
欢迎使用SO,请为您的答案提供一些解释,仅发布代码将不被视为有效答案。仅发布代码的答案被视为低质量:请确保提供解释您的代码的作用以及如何解决问题。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。另请参见解释完全基于代码的答案:
var video = videojs("my-video");

video.on('playing', function () {
    console.log("The video has been playing");

    var segment = get_current_segment_info(this);
    console.log(segment.uri);
});

function get_current_segment_info(obj, old_segment = null) {
    var target_media = obj.tech().hls.playlists.media();
    var snapshot_time = obj.currentTime();

var segment;
var segment_time;

// Itinerate trough available segments and get first within which snapshot_time is
for (var i = 0, l = target_media.segments.length; i < l; i++) {
    // Note: segment.end may be undefined or is not properly set
    if (snapshot_time < target_media.segments[i].end) {
        segment = target_media.segments[i];
        break;
    }
}

// Null segment_time in case it's lower then 0.
if (segment) {
    segment_time = Math.max(0, snapshot_time - (segment.end - segment.duration));
    // Because early segments don't have end property
} else {
    segment = target_media.segments[0];
    segment_time = 0;
}
console.log(snapshot_time);
console.log(segment.uri);
console.log(segment.resolvedUri);
console.log(segment);
return segment;

}