TouchTheMind
@TouchTheMind
js writer

Video.js Как использовать http-streaming без мастер манифеста?

У меня нет одного урла с мастер манифестом, есть отдельно 3 урла с разными разрешениями
https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/640x480.m3u8
https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1280x720.m3u8
https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1920x1080.m3u8


Я пытался создать искуственно мастер манифест, но это не работает
const manifestString = [
	'#EXTM3U',
	'#EXT-X-VERSION:4',
	'#EXT-X-STREAM-INF:BANDWIDTH=500,RESOLUTION=640x480',
	'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/640x480.m3u8',
	'#EXT-X-STREAM-INF:BANDWIDTH=1000,RESOLUTION=1280x720',
	'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1280x720.m3u8',
	'#EXT-X-STREAM-INF:BANDWIDTH=2000,RESOLUTION=1920x1080',
	'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1920x1080.m3u8'
].join('\n');
​
const parser = new m3u8Parser.Parser();
​
parser.push(manifestString);
parser.end();
​
const url = `data:application/vnd.videojs.vhs+json,${JSON.stringify(parser.manifest)}`;
const type = 'application/vnd.videojs.vhs+json';
const options = {
	html5: {
		hls: {
			smoothQualityChange: true,
			overrideNative: true
		}
	}
};
​
try {
	window.player = videojs('videoId', options);
​
	window.player.src({
		src: url,
		type: type
	});
} catch(err) {
	console.log("caught an error trying to create and add src to player:", err);
}


Как мне это заставить работать?
  • Вопрос задан
  • 599 просмотров
Решения вопроса 1
TouchTheMind
@TouchTheMind Автор вопроса
js writer
const manifestString = [
    '#EXTM3U',
    '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=586889,RESOLUTION=640x480',
    'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/640x480.m3u8',
    '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2171914,RESOLUTION=1280x720',
    'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1280x720.m3u8',
    '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3192876,RESOLUTION=1920x1080',
    'https://example.com/mvsz1vqpyxdh52eogfucnxape5pjnj7b/video/video.mp4/1920x1080.m3u8'
].join('\n');
const url = 'data:application/x-mpegURL;base64,' + btoa(manifestString);
const type = 'application/x-mpegURL'';
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы