【发布时间】:2016-11-13 13:27:18
【问题描述】:
我一直在使用 WebcamJS 库在浏览器中从摄像头流式传输视频,但我遇到了一个主要的性能瓶颈。由于我使用的是 Internet Explorer 11(并且无法切换到其他浏览器),因此该库将恢复为 Flash 后备以访问相机。
返回图像的 ActionScript 回调非常慢,因为它有很多步骤。当它返回图像时,它首先将其字节数组编码为 PNG 或 JPG,然后编码为 base 64 字符串。然后使用 ExternalInterface 将此字符串传递给 JavaScript,后者通过数据 URI 对图像进行解码。鉴于我只需要 JavaScript 中的字节数组,这些额外的步骤似乎很浪费。
我之前不得不在 C++/Python 中解决类似的问题。我没有在两种语言之间反复传递数组数据,而是使用 Python 在程序开始时传递一个 NumPy 数组引用。然后,从那时起,他们都可以访问相同的数据,而无需任何额外的通信。
既然您了解了我的情况,那么问题来了:是否可以通过引用 ActionScript 来传递 JavaScript Array 或 ArrayBuffer?在这种情况下,我可以让 ActionScript 直接修改 JavaScript 数组,而不是浪费时间转换、编码和解码每一帧的图像。
(网络摄像头JS:https://github.com/jhuckaby/webcamjs)
【问题讨论】:
-
我实际上可能刚刚通过 SharedObjects 找到了我自己的问题的答案:stackoverflow.com/questions/2860839/…stackoverflow.com/questions/14010707/…
-
对于将来遇到同样问题的其他人来说,SharedObjects 实际上 don't 似乎是答案。看起来我想要的功能在 JavaScript/ActionScript 中没有。但是,通过使用这个相机库,我能够获得更好的性能:github.com/macobo/meemoo-camcanvas
标签: javascript arrays actionscript-3 flash pass-by-reference