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



将二进制数据从插件传输到浏览器的最佳方式是什么。我们想在浏览器选项卡上播放从网络收到的YUV缓冲区。目前正在转换到base64并通过回调进行赋值。但它不是有效的,我发现以下问题

1> CPU和内存正在上升2> 当我们更改浏览器选项卡时,回调事件不会被传递,稍后所有事件都会在返回到我们的选项卡时一次性给出。

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

提前谢谢。

NPAPI已从大多数主流浏览器中删除。。。最后一个顽固的Safari将从macOS Mojave开始删除它。在这种情况下,不要期望对规范进行任何形式的更新——无论你使用的是什么,它都可能是一种垂死的方法。

在这种情况下,在windows上,有一种方法(实际上是超级破解(可以用来从本机消息扩展直接绘制到浏览器中的窗口,但它不可移植,而且取决于内部实现细节。自从我写下另一个答案(链接在本段中(以来,我还没有真正研究过它,所以我不知道它是否仍然有效。

无论如何,如果你在一个完全支持NPAPI的浏览器上,那么你可以直接将YUV数据绘制到浏览器上给你的插件窗口中;FireBreath中有一个闪电传输图像数据的例子,您可以将其作为一个例子进行跟踪。

你也可以尝试在插件中监听TCP端口并从浏览器连接到它的一些变体;你很容易在那里遇到一些安全问题,但这是我能想到的唯一其他方法。

NPAPI根本不是为了允许插件和浏览器之间的快速数据传输而设计的;几年前,我提交了一份添加该功能的提案,但它基本上离NPAPI的消亡太近了(目前基本上已经过去了(,无法实现。不过,你看到的问题与我的预期100%一致。。。这仍然是我所知道的最好的方式。

最新更新