我正在尝试使用Blob从ArrayBuffer创建.slice(),因为我需要复制ArrayBuffer,因为我知道将来它将被代码更改(它的byteLength将是0),而代码是我没有控制/想要更改的。
new Blob([data2.payload.slice()], {type: "video/MP2T"})我会犯错误
Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer在……上面
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36在Windows7 x64上。
还有其他复制ArrayBuffer的方法吗?这样就不会有实际的复制,其他方法似乎并不是很简单。。
ArrayBuffer.transfer()看起来不错,但是他们的填充会产生错误
Source and destination must be ArrayBuffer instances发布于 2016-12-11 03:27:33
这是我的错,我被不清楚的错误信息弄糊涂了,在这种情况下什么也做不了,因为在Blob创建data2.payload的时候,byteLength: 0已经存在了。
而在通常情况下
var from = new ArrayBuffer(0);
var to = from.slice();
var to = from.slice(0);to将是带有byteLength: 0的ArrayBuffer,在本例中是触发错误,因为在data2.payload传递给我的代码之前,它在worker中被修改,为了避免在主线程和worker之间复制片段,data2.payload所有权被传递给工作人员。
发布于 2016-12-11 02:43:22
尝试使用new Blob([new Uint8Array(data2.payload.slice(0))], {type: "video/MP2T"})
在这把小提琴中看到它
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://fiddle.jshell.net/img/logo.png", true);
xhr.responseType = "arraybuffer";
xhr.onload = function(e) {
var binaryArray = new Uint8Array(this.response.slice(0)); // use UInt8Array for binary
var blob = new Blob([binaryArray], { type: "image/png" });
var URL = window.URL || window.webkitURL;
var imageUrl = URL.createObjectURL(blob); // create url
document.getElementById("image").src = imageUrl;
};
xhr.send();https://stackoverflow.com/questions/41082427
复制相似问题