Я думаю, что решение в событиях Hls.Events.BUFFER_APPENDING
или Hls.Events.BUFFER_APPENDED
.
BUFFER_APPENDING запускается, когда сегмент добавляется в буфер - данные: {сегмент: сегмент объекта}
BUFFER_APPENDED вызывается при добавлении сегмента к данным буфера: {parent: родительский сегмент, который вызвал BUFFER_APPENDING, в ожидании: nb сегментов, ожидающих добавления для этого родительского сегмента, timeRanges: {video: TimeRange , аудио: TimeRange}
Я не смог проверить это, но вы можете попробовать:
var streamRecord = [];
function startRecord(p1) {
var video = document.getElementById('player_' + p1);
var player = new Hls();
source = screenSource(p1);
console.log(source);
player.attachMedia(video);
player.on(Hls.Events.MEDIA_ATTACHED, function () {
player.loadSource(source);
/*player.on(Hls.Events.MANIFEST_PARSED, function () {
video.play();
});*/
player.on(Hls.Events.BUFFER_APPENDING, function (event, data) {
streamRecord[data.type].push(data.data);
});
});
}
var downloadURL = function(data, fileName) {
var a;
a = document.createElement('a');
a.href = data;
a.download = fileName;
document.body.appendChild(a);
a.style = 'display: none';
a.click();
a.remove();
};
var downloadVideo = function(data, fileName) {
var blob, url;
blob = new Blob([data], { type: 'application/octet-stream' });
url = window.URL.createObjectURL(blob);
downloadURL(url, fileName);
setTimeout(function() {
return window.URL.revokeObjectURL(url);
}, 1000);
};
downloadVideo(streamRecord, 'video.mp4');