我正在使用canvas
元素实时拼贴多个video
元素,效果很好。我也试图获取canvas
数据并定期将其写入文件,因此当video
元素播放完毕后,我可以对原始帧文件中的视频进行编码。
我有一个函数在每40ms(给出25fps)的定时器间隔调用,大致如下所示(有太多的代码要完全粘贴):
function saveFrame() {
// code to copy from video elements to my canvas...
// ...
// Get the canvas image data and write it to a file
var imgData = canvasContext.getImageData(0, 0,
canvasElement.width,
canvasElement.height);
var b = new Blob([imgData], {type: 'application/octet-binary'});
// Write the blob to a file I previously opened
// fileWriter is a FileWriter that I obtained and saved previously
fileWriter.write(b);
}
setInterval(function() {
saveFrame();
}, 40);
每当我点击fileWriter.write(blob)
语句时,我都会收到以下错误:
Uncaught InvalidStateError:依赖于缓存状态的操作 在一个接口对象中,但是状态已经改变了 从磁盘读取。
这是时间问题吗?文件编写器API不能支持每40ms写一次吗?