【问题标题】:Can't get NPAPI plugin to work for mime-type "image/webp:webp:WebP"无法让 NPAPI 插件适用于 mime 类型“image/webp:webp:WebP”
【发布时间】:2012-07-17 16:31:44
【问题描述】:

我已经为 webP 编译了 NPAPI 插件:

http://code.google.com/p/webp-npapi-linux/

它在我的 Firefox 中运行良好。我根本不明白如何让它从谷歌浏览器工作。我创建了 json 文件:

$ cat manifest.json
{
  "name": "My First Extension",
  "version": "1.0",
  "manifest_version": 2,
  "description": "The first extension that I made.",
  "plugins": [
    { "path": "webp-npapi.so", "public": true }
  ]
}

然后我启动 Google Chrome,转到 chrome://extensions,单击“加载解压的扩展程序...”。我可以看到它出现在列表中:

My First Extension - Version: 1.0 (Unpacked)
The first extension that I made.
ID: bakhhdpebhmgoaecbmpkcbnmcmnamhhk

但是我仍然无法打开没有 *.webp 图像!

我的测试 HTML 页面是:

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html> 
 <head> 
  <title> 
   Hello World Demonstration Document
  </title> 
 </head> 
<embed type="image/webp:webp:WebP" id="pluginId">
<script>
  var plugin = document.getElementById("pluginId");
  var result = plugin.myPluginMethod();  // call a method in your plugin
  console.log("my plugin returned: " + result);
</script>
 <body> 
  <h1> 
   Hello, World!
  </h1> 
<img src="1.sm.webp" alt="too bad"/>
 </body> 
</html> 

文件在本地下载 (wget http://www.gstatic.com/webp/gallery/1.sm.webp)。 ldd 在我看来还不错:

$ ldd webp-npapi.so
    linux-vdso.so.1 =>  (0x00007fffafdad000)
    libwebp.so.2 => /usr/lib/x86_64-linux-gnu/libwebp.so.2 (0x00007ff82fd60000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ff82fa4c000)
    libm.so.6 => /lib/libm.so.6 (0x00007ff82f7c9000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007ff82f5b3000)
    libc.so.6 => /lib/libc.so.6 (0x00007ff82f251000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff8301c9000)

我错过了什么?

【问题讨论】:

    标签: google-chrome-extension npapi


    【解决方案1】:

    插件无法加载可能有多种原因。

    1. npapi 插件在成功加载之前在 chrome 中崩溃
      在这种情况下,您需要使用以下命令从终端运行 google chrome:google-chrome --plugin-startup-dialog 并调试问题(例如,使用 gdb like so)

    2. 找不到插件的依赖(我的情况就是这样,看截图)
      通过执行ldd webp-npapi.so(并检查缺少的库的输出),确认库 (libwebp.so) 已安装并由 webp-npapi.so 找到。在我的例子中,webp-npapi 插件是针对libwebp.so.0 构建的,但是编译源代码会导致更新的库版本libwebp.so.3。您是否从源代码编译了 webp-npapi-plugin?

    3. 插件正确加载,但您的 embed/object 标签错误
      不太可能,如果它在 Firefox 中未更改 - 您可以发布示例页面 使用 em> 插件?

    【讨论】:

    • 我永远无法启动 gdb,所以我想没有崩溃。 ldd 看起来不错。我将更新帖子中使用的 HTML 页面。
    【解决方案2】:

    这里是解决方案。由于某种原因,firefox 有一个内置的 mime 类型机制 (??) 并且确实将 webp 识别为图像。另一方面,铬需要被告知图像是 webp。

    在我的 Linux 机器上,我所要做的就是在 /etc/mime.types 中注册 MIME 类型(或在用户级别注册 ~/.mime.types)。要验证 MIME 类型是否已注册,请发出:

    $ grep webp /etc/mime.types
    image/webp                  webp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      相关资源
      最近更新 更多