Я использую следующий пример программы для добавления медиафайлов, но получаю сообщение «Uncaught InvalidStateError: была предпринята попытка использовать объект, который не является или больше не может использоваться» в первый момент, когда он попадает в код «mediaSource.sourceBuffers [0] .appendBuffer(mediaSegment);". Я использую Chrome 31.0.1650.57. Может ли кто-нибудь посоветовать мне решить эту проблему?
https://github.com/jbochi/media-source-playground/blob/master/test.html
Я сделал следующую модификацию для добавления файлов.
var buffer_len = 0;
function HaveMoreMediaSegments(){
//return false; //return buffers.length > 0;
return buffers.length > buffer_len;
}
// var GetNextMediaSegment = GetInitializationSegment;
function GetNextMediaSegment(){
var buffer = buffers[buffer_len];
buffers = buffers.slice(1);
buffer_len = buffer_len + 1;
return buffer;
}
И изменился
mediaSource.sourceBuffers[0].append(mediaSegment);
to
mediaSource.sourceBuffers[0].appendBuffer(mediaSegment);
И
sourceBuffer.append(initSegment);
to
sourceBuffer.appendBuffer(initSegment);
Поскольку метод добавления не работает в моей среде.
И я использую sourceopen вместо webkitsourceopen внутри события window.setTimeout().
mediaSource.addEventListener('sourceopen', onSourceOpen.bind(this, video));