Ho due video nome v11.webm e v12.webm.Come si aggiungono due dati di file video a un buffer di origine utilizzando l'API di origine multimediale?
quello che voglio è che questi due video dovrebbero funzionare senza problemi, senza alcuna lacuna.
sto seguendo l'approccio api sorgente multimediale dei aggiungendo dati al buffer di origine.
Mi riferisco la demo contenute nella presente link
ho modificato che l'esempio e rimosso la parte della suddivisione in blocchi del video e anche cercato di accodare i dati in file di buffer di origine saggio.
Il mio codice è il seguente:
<script>
var video = document.querySelector('video');
window.MediaSource = window.MediaSource || window.WebKitMediaSource;
if (!!!window.MediaSource) {
alert('MediaSource API is not available');
}
var mediaSource = new MediaSource();
video.src = window.URL.createObjectURL(mediaSource);
mediaSource.addEventListener('webkitsourceopen', function(e) {
var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
for(i=1;i<=2;i++)
{
(function(i){
GET('v1'+i+'.webm', function(uInt8Array) {
var file = new Blob([uInt8Array], {type: 'video/webm'});
var reader = new FileReader();
reader.onload = function(e) {
sourceBuffer.append(new Uint8Array(e.target.result));
};
reader.readAsArrayBuffer(file);
});
})(i);
}
}, false);
mediaSource.addEventListener('webkitsourceended', function(e) {
logger.log('mediaSource readyState: ' + this.readyState);
}, false);
function GET(url, callback) {
// alert(url);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.send();
xhr.onload = function(e) {
if (xhr.status != 200) {
alert("Unexpected status code " + xhr.status + " for " + url);
return false;
}
callback(new Uint8Array(xhr.response));
};
}
</script>
In questo momento il codice non funziona, se lo desideri.
C'è una mescolanza incoerente dei dati v11.webm file e v12.webm.
Non funziona perfettamente.
Sei mai riuscito a capirlo? Le Specifiche MediaSource dicono che una cosa del genere è possibile usando gli offset di Timestamp (https://dvcs.w3.org/hg/html-media/raw-file/6d127e69c9f8/media-source/media-source.html#source-buffer- timestamp-offset), ma non sono stato in grado di trovare esattamente come impostare un offset di questo tipo. –