【问题标题】:Best way to pass binary data (YUV Buffer) from plugin to browser将二进制数据(YUV 缓冲区)从插件传递到浏览器的最佳方式
【发布时间】:2018-07-30 11:20:16
【问题描述】:

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

1> CPU 和内存在增加 2> 当我们改变浏览器标签时回调事件不会被传递,稍后所有事件都会在回到我们的标签时一次性给出。

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

提前致谢。

【问题讨论】:

    标签: plugins npapi yuv


    【解决方案1】:

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

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

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

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

    NPAPI 根本没有设计为允许插件和浏览器之间快速传输数据;几年前我提交了一个添加该功能的提案,但它基本上太接近 NPAPI 的死亡(此时基本上已经过去),它无法去任何地方。不过,您看到的问题与我的预期 100% 一致……而且这仍然是我所知道的最佳方式。

    【讨论】:

    • 谢谢,目前正在使用支持 NPAPI 和 Chrome 扩展的 IE11插件 Mozilla 扩展插件希望将来也支持此功能
    • 感谢出租车司机,我正在使用 Firebreath 2.0 制作插件,并计划通过扩展支持支持 NPAPI 和 Chrome 的 IE11通过扩展插件插入 Mozilla插件希望将来支持此功能
    • IE11 不支持 NPAPI,它支持 ActiveX。 FireBreath 支持两者,但它根本不是一回事
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2012-04-14
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2011-12-18
    相关资源
    最近更新 更多