【发布时间】:2013-12-01 06:24:12
【问题描述】:
我使用以下示例程序附加媒体文件,但在第一次遇到代码“mediaSource.sourceBuffers”时出现“未捕获的 InvalidStateError:尝试使用不可用或不再可用的对象”错误[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);
到
mediaSource.sourceBuffers[0].appendBuffer(mediaSegment);
还有
sourceBuffer.append(initSegment);
到
sourceBuffer.appendBuffer(initSegment);
因为 append 方法在我的环境中不起作用。
我在 window.setTimeout() 事件中使用 sourceopen 而不是 webkitsourceopen。
mediaSource.addEventListener('sourceopen', onSourceOpen.bind(this, video));
【问题讨论】:
标签: javascript html5-video media-source