Как получить информацию о текущем сегменте.ts стандартного плейлиста m3u8?
Мы используем videojs.fairplay.js для воспроизведения контента DRM в браузере MAC-сафари. Сначала при воспроизведении видео DRM мы получаем один стандартный список воспроизведения (.m3u8), в котором определен стек сегментов (.ts). Нам нужно знать информацию о каждом сегменте и полную мета-информацию, такую как (длина, тип, URL и т. Д.).
0 ответов
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;
}