mirror of
https://github.com/servo/servo.git
synced 2025-07-12 18:03:49 +01:00
43 lines
No EOL
1.5 KiB
JavaScript
43 lines
No EOL
1.5 KiB
JavaScript
function testmediasource(config) {
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
// Fetch the media resources
|
|
var fetches = [config.audioPath, config.videoPath].map(function(path) {
|
|
return fetch(path).then(function(response) {
|
|
if (!response.ok) throw new Error('Resource fetch failed');
|
|
return response.arrayBuffer();
|
|
});
|
|
});
|
|
|
|
Promise.all(fetches).then(function(resources) {
|
|
config.audioMedia = resources[0];
|
|
config.videoMedia = resources[1];
|
|
|
|
// Create media source
|
|
var source = new MediaSource();
|
|
|
|
// Create and fill source buffers when the media source is opened
|
|
source.addEventListener('sourceopen', onSourceOpen);
|
|
|
|
function onSourceOpen(event) {
|
|
var audioSourceBuffer = source.addSourceBuffer(config.audioType),
|
|
videoSourceBuffer = source.addSourceBuffer(config.videoType);
|
|
|
|
audioSourceBuffer.appendBuffer(config.audioMedia);
|
|
videoSourceBuffer.appendBuffer(config.videoMedia);
|
|
|
|
function endOfStream() {
|
|
if (audioSourceBuffer.updating || videoSourceBuffer.updating) {
|
|
setTimeout(endOfStream, 250);
|
|
} else {
|
|
source.endOfStream();
|
|
}
|
|
}
|
|
|
|
endOfStream();
|
|
}
|
|
|
|
resolve(source);
|
|
});
|
|
});
|
|
} |