前言:本文参考了其他已有的文章,在其基础上简化了一些没有必要的操作。

同时也记录一下chrome 插件ppapi环境的基础搭建。并且感谢已有文章作者的大无畏的分享精神!

在这附上参考文章链接:https://blog.csdn.net/y601500359/article/details/72821974

当前系统版本为 Windows 10 x64, Chrome 版本 71.0.3578.98(正式版本) (32 位),VS2013(中文版)

==============================================================================

如果你能下载到NACL SDK pepper_47 或者 pepper_49 的话下面的一些操作可以省略,直接从步骤4开始看起!(仅限编译运行media_stream_vide)

----------------------------------------------------------------

1.)下载 "假"nacl_sdk (此操作可以省略)

先下载并安装 Python 因为更新的时候需要。

https://www.python.org/download/

* 必须使用 Python 2.7 版本

这个步骤主要是为了更新真的NACL SDK 改步骤全程需要FQ。(不FQ可以从别处下载一个下来很小大概38kb左右)

解压nacl_sdk 之后进入其目录下 shift +右键 选择启动命令行:

2.)更新真 NACL SDK (此操作可以省略)

步骤2全程需要FQ更新 。在更新之前可以通过 list命令查看版本信息:

./naclsdk.bat  list

post_stable:前一个稳定版本

stable:稳定版,推荐追求稳定的普通用户使用,更新最慢。
beta:测试版,有一定新功能,但是可能会存在不稳定情况,适合喜欢尝鲜的朋友使用,更新速度一般。
dev:开发版,更新最快,新功能最多,但是可能非常不稳定,适合开发人员使用。

此处我使用的是pepper_47 版本。

然后使用更新命令:./naclsdk.bat update

可能会出现如下错误:

出现的原因 原作者说是 证书cacerts.txt 的问题。解决方案可以从原作者提供的下载连接进行下载然后替换nacl_sdk下面的这个文件(可能需要多次替换)

原作者提供的证书文件下载连接:https://download.csdn.net/download/y601500359/10442560 (再次感谢原作者的分享)

如果没有什么问题正常应该是 会把pepper_49版本更新下来。如果想更新其他的版本可以使用下面的命令:

./naclsdk.bat update pepper_47

更新完成之后 真的sdk 就下载下来了如下:

3.)安装 vs_addin (此操作可以不做)

按照原作者的教程 是使用命令:naclsdk update sdk_addin

我做这个操作的时候没有正常更新下来,猜测可能是因为 vs_addin 的命名有更新

我是直接从别的地方直接下载 vs_addin (如果需要支持vs2013需要修改其install.py和create_ppapi_platform.py文件这里不做描述)

然后进vs_addin 目录执行安装命令:

install.bat (vs2010或者vs2013需要有英文语言包 因为再install 的时候会需要1033的语言包 这些再网上都可以下载到)

如果下载的语言安装包如果安装失败的话,可以把该安装包新建一个桌面快捷方式 然后点击快捷方式右键选:属性-目标 然后再路径后面加上: -Uninstall

完整如下:D:\other\vs2013.exe -Uninstall

就可以正常安装英文语言包了。

这一步骤完全可以省略不去做因为,安装不安装vs_addin 也不影响正常ppapi开发!!!

4.)设置Chrome 浏览器环境路径和开启nacl

首先需要本机安装chrome 浏览器 默认情况下 其绝对路径应该为:C:\Users\Admin\AppData\Local\Google\Chrome\Application\chrome.exe

再系统环境变量 path 后面加上:C:\Users\Admin\AppData\Local\Google\Chrome\Application

其次开启chrome 浏览器nacl 相关模块:

打开chrome 浏览器 地址栏输入: chrome://flags/

开启之后按F12 选一下 network 里边的Disable cache

然后重启浏览器 地址栏输入:chrome://nacl 检测一下是否正常开启。

5.)编译NACL SDK 自带 Demo:pepper_47\examples\api\media_stream_video

1.打开vs2013 新建win32 项目起名:media_stream_video 然后选择DLL 完成创建。

2.删除自动生成那些.h .cpp 文件。

3.拷贝nacl sdk目录下的dmeo:pepper_47\examples\api\media_stream_video 下的 media_stream_video.cc 文件到新建的win32项目目录下并且添加到项目当中。

4.再新建的win32项目的目录下新建两个文件夹:include 和 lib

5.拷贝nacl sdk 下的include 和lib文件到步骤4新建include 和 lib目录下(具体拷贝pepper_47/include 目录下的所有文件。拷贝pepper_47/lib/win_x86_32_host/release 目录下的所有lib文件)。

6.回到win32程序中选择 release 模式然后 取消预编译头 并且设置:在“配置属性–>C/C++–>代码生成–>运行库”中设置为MT

7.设置项目依赖include目录:“配置属性--》C/C++>>常规-》附加包含目录”中增加:./include

8.设置项目以来lib目录:“配置属性--》连接器>>常规-》附加库包含目录”中 增加: ./lib

9.加入项目依赖具体lib:“配置属性--》连接器>>输入-》附加依赖项”中 增加:

ppapi.lib
ppapi_cpp.lib
ppapi_gles2.lib

如下:

10.直接编译生成 media_stream_video.dll 会再项目Release目录下。

11.拷贝nacl sdk :pepper_47/examples/api/media_stream_video/index.html 文件到刚才生成Release目录下修改html内容参考如下:

!DOCTYPE html>
<html><!--  Copyright 2014 The Chromium Authors. All rights reserved.  Use of this source code is governed by a BSD-style license that can be  found in the LICENSE file.  -->
<head><title>Media Stream Video Example</title><script type="text/javascript">var plugin; var stream;function handleMessage(message){ console.log(message); }function success(s){stream = s;plugin.postMessage({ command: 'init', track: stream.getVideoTracks()[0] });}function failure(e){console.log(e);}function initialize(){plugin = document.getElementById('plugin');plugin.addEventListener('message', handleMessage, false);var constraints = { audio: false, video: { mandatory: { minWidth: 640, minHeight: 320, minFrameRate: 30 }, optional: [] } };navigator.webkitGetUserMedia(constraints, success, failure);}function changeFormat(format){plugin.postMessage({ command: 'format', format: format });}function changeSize(width, height){plugin.postMessage({ command: 'size', width: width, height: height });}document.addEventListener('DOMContentLoaded', initialize, false);</script>
</head>
<body><h1>Pepper MediaStream Video API Example</h1><br>  This example demonstrates receiving frames from a video MediaStreamTrack andrendering them in a plugin.<br>  Left side shows YUV frames. Right side shows BGRA frames.  <embed id="plugin" type="application/x-ppapi-example-media-stream-video" width="640" height="240" />  <h2>Format:</h2><br>  <button οnclick="            changeFormat('YV12')">YV12</button>  <button οnclick="            changeFormat('I420')">I420</button>  <button οnclick="            changeFormat('BGRA')">BGRA</button>  <button οnclick="            changeFormat('DEFAULT')">DEFAULT</button>  <h2>Size:</h2><br>  <button οnclick="            changeSize(72, 72)">72 x 72</button>  <button οnclick="            changeSize(640, 360)">640 x 360</button>  <button οnclick="            changeSize(1280, 720)">1280 x 720</button>  <button οnclick="            changeSize(0, 0)">DEFAULT</button>
</body>
</html>

其中 PostMessage(message) 用于向 C++ 端发送消息,HandleMessage 用于接收来自 C++ 端的消息

12.为了方便测试该DLL 我是直接拷贝该Release 整个目录到 D盘根目录下的“1”文件夹中。

13.管理员身份开启命令行 输入命令行参数:

chrome --register-pepper-plugins="D:/1/Release/media_stream_video.dll#ppexample##1.0.0;application/x-ppapi-example-media-stream-video" file:///D:/1/Release/index.html

--register-pepper-plugins 参数表示注册 PPAPI 插件,其中 application/x-ppapi-hello 为插件类型,注意这个类型名要和 HTML 中指定的 embed 元素的类型名要完全匹配

正常就可以开启摄像头了

===========================================================================================================

补充:如果你执行的时候页面提示:”该插件不受支持“ 这个时候你需要把所有开启的chrme 浏览器关闭掉然后再执行 刚才的命令就可以正常加载DLL了

再次补充:上面的一些步骤可以省略的还有不需要操作的。是因为只需要把真正的NACL SDK 搞到就行,然后只需要其里边的 include 文件 和lib文件 。

vs_addin 也不用安装。编译的时候直接 再项目中新建include和lib 目录作为依赖就可以正常编译ppapi插件了。记得编译的时候要选release模式 因为debug模式下可能会编译出错。

-----------------------------------------

备注:如果执行上面的命令行想看到 程序内部的 OutputDebugString 输出 需要关闭chrome 沙箱

命令行:chrome -no-sandbox --register-pepper-plugins="D:/1/Release/media_stream_video.dll#ppexample##1.0.0;application/x-ppapi-example-media-stream-video" file:///D:/1/Release/media_stream_video.html

转载于:https://www.cnblogs.com/wainiwann/p/10685428.html

Chrome 插件PPAPI 开发(一)环境搭建相关推荐

  1. 谷歌浏览器Chrome插件扩展开发教程

    下文是我看到的一篇很好的Chrome扩展开发攻略,感觉很有价值,内容详尽,排版精美,遂转载. 原文由小茗同学发表于小茗同学的博客园:[干货]Chrome插件(扩展)开发全攻略 1. 写在前面 我花了将 ...

  2. 【干货】Chrome插件(扩展)开发全攻略-转载

    [干货]Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这 ...

  3. 新手入门Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这 ...

  4. 【转】Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这 ...

  5. 【干货】Chrome插件(扩展)开发全攻略(转载)

    转载来源:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html [干货]Chrome插件(扩展)开发全攻略 写在前面 我花了将近 ...

  6. auto.js id为参数滑动_【Autojs教程】02Autojs PC端开发调试环境搭建

    [Autojs教程]02-Autojs PC端开发调试环境搭建 写在前面 本篇教程算是保姆级教程了,希望以此能吸引更多感兴趣的同学学习Autojs,也希望大家能因此碰撞出更多的奇思妙想 关注微信公众号 ...

  7. Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)

    Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...

  8. 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)转

    [干货]Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔) 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所 ...

  9. BI报表开发之环境搭建(二)

    上一篇<BI报表开发之环境搭建(一)>中详细描述了SQL SERVER R2 的安装步骤,本篇将继续描述BI报表开发的环境搭建部分-- Orale数据库安装. <1>下载ora ...

  10. 小程序开发及环境搭建及发布

    一.小程序开发及环境搭建 1.下载Hbuild X https://www.dcloud.io/hbuilderx.html 2.下载腾讯开发工具 https://q.qq.com/wiki/tool ...

最新文章

  1. 阿里云盘又送福利啦?空间大时间长,不要犹豫快上车!
  2. CF396C On Changing Tree
  3. BP contact search in Fiori ui
  4. IntelliJ IDEA 删除了快捷键后,如何找回来?
  5. leetcode94. 二叉树的中序遍历(dfs)
  6. c++多线程结束后需要释放_缓刑结束后是否需要继续坐牢?
  7. Redis数据结构之列表
  8. ARM中断产生和管理
  9. ubuntu18.04 安装(指定版本/最新版)docker与docker compose
  10. AttributeError: ‘Model‘ object has no attribute ‘predict_classes‘ 的解决方案
  11. ROS入门-1认识Linux系统,虚拟机安装Ubuntu
  12. [web]EL表达式失效
  13. Java发送mail报错“java.util.ServiceConfigurationError: com.sun.mail.imap.IMAPProvider not a subtype”
  14. pandas数据处理
  15. 重命名 VMware ESX 主机
  16. PySpark——开启大数据分析师之路
  17. 企业网站用什么服务器操作系统?
  18. LVS负载均衡群集—NAT模式实例
  19. NC Portal单据增加自定义按钮
  20. 如何让文字转换成语音

热门文章

  1. 用yum下载安装gcc
  2. c++vs解决字符常量过多
  3. 什么是南大核心、北大核心、科技核心、人文核心、省级期刊和国家级期刊
  4. 信息安全原理与技术第八次实验:拒绝服务攻击与防范
  5. Unity3D零基础视频教程下载(全套+视频)
  6. SecureCRT 连接 DynamipsGUI创建的模拟路由器
  7. 墨者学院 - IIS写权限漏洞分析溯源
  8. ov7670 打通过程
  9. DevExpress TreeList GridView 样式设置
  10. C# BackgroundWorker的用法