我尝试使用媒体源扩展(MSE)API 通过 websocket 播放实时流媒体。一切正常,除了浏览器会崩溃大约一天。我还发现内存总是会增加。下面是我的片段。我想我附加了太多数据,以至于内存总是会增加,这会导致 Chrome 出现异常行为。是否可以通过 MSE API 释放 MSE/视频缓冲区以防止内存泄漏?
操作系统:Windows 7 SP1 64 位 Windows 10 64 位
var buffer_size = 5*1024*1024;
var buffer_index = 0;
var video = null;
var frag_mp4_buffer = new Uint8Array(buffer_size);
websocket.onmessage = function(evt){
var buffer = new Uint8Array(evt.data);
if(buffer.length !=0){
if((buffer_index + buffer.length) <= buffer_size){
frag_mp4_buffer.set(buffer, buffer_index);
buffer_index = buffer_index + buffer.length;
if(sourceBuffer.updating == false){
var appended = frag_mp4_buffer.slice(0,buffer_index);
sourceBuffer.appendBuffer(appended);
frag_mp4_buffer.fill(0);
buffer_index = 0;
}
}
}
};