【问题标题】:Share Array Reference between JavaScript and ActionScript在 JavaScript 和 ActionScript 之间共享数组引用
【发布时间】: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)

【问题讨论】:

标签: javascript arrays actionscript-3 flash pass-by-reference


【解决方案1】:

为了完整起见,Flash 中的 SharedObjects 将使用 AMF 协议序列化的数据存储在 Javascript 无法访问以读取数据的文件系统上(在一个非常特定的沙盒和锁定位置)。

您是否尝试过简单地调用 ExternalInterface 方法并将字节数组作为参数传递?它将按值传递,自动从 Actionscript 数据结构转换为 Javascript 数据结构,但您会跳过所有编码步骤,它应该足够快...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2014-03-17
    • 2014-08-23
    • 1970-01-01
    • 2018-10-05
    • 2020-08-31
    相关资源
    最近更新 更多