从插件向浏览器传递二进制数据(YUV缓冲区)的最佳方法

时间:2018-07-30 11:20:17

标签: plugins npapi yuv

从插件向浏览器传输二进制数据的最佳方法是什么。 我们要在浏览器选项卡上播放从网络接收到的YUV缓冲区。 目前正在转换为base64并通过回调提供。但效率不高,正在寻找以下问题

1> CPU和内存上升 2>当我们更改浏览器标签时,回调事件不会传递,稍后所有事件都会在移回我们的标签时立即给出。

我还想知道有什么方法可以使用插件线程本身直接在浏览器上绘制YUV框架。

先谢谢了。

1 个答案:

答案 0 :(得分:0)

NPAPI已从大多数主流浏览器中删除...最后一个保留项Safari将在macOS Mojave中删除它。在这种情况下,不要指望对规范进行任何形式的更新-但是您正在使用它可能是一种垂死的方法。

情况就是如此,在Windows there is a method(实际上是超级黑客)上,您可以使用它从本机消息扩展名直接绘制到浏览器中的窗口,但是它不是可移植的,并且取决于内部实现细节。自从我写了另一个答案(在本段中链接)以来,我还没有真正研究过它,所以我不知道它是否仍然有效。

无论如何,如果您使用的是完全支持NPAPI的浏览器,则可以将YUV数据直接绘制到浏览器上提供给您的插件窗口中;有一个example of blitting image data in FireBreath可以作为示例进行跟踪。

您还可以尝试一些变化,即监听插件中的TCP端口并从浏览器连接到该端口;您可以轻松地在那里遇到一些安全问题,但这是我能想到的唯一其他方法。

NPAPI根本没有设计成允许在插件和浏览器之间快速传输数据。几年前,我提交了一项添加该功能的建议,但是它几乎已经接近NPAPI的死亡(此时基本上已经过去了),因此它无法扩展到任何地方。不过,您看到的问题与我的预期100%一致...但这仍然是我所知道的最好方法。