PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI

前言:

在进行下文之前,先介绍下发布PPAPI的几种格式	

Chrome PPAPI插件只能使用PPAPI接口的NativeClient(NaCl)方式编写,

Native Client分别有三种embed类型:
  1、“application/x-ppapi”:平台相关,唯一能直接使用win32 apiplatfrom(有功能上的限制)。 dll格式,不允许通过Chrome web store分发。
  2、“application/x-nacl”:只能通过PPAPI,平台无关,cpu相关。nexe格式,只能通过Chromeweb store分发。
  3、“application/x-pnacl”:只能通过PPAPI,平台无关,cpu无关。pexe格式,可以不通过Chrome web store分发

据说Flash就是采用第一种类型开发的。

编译:

由于本文是本地服务发布,所需要的格式是pexe格式,所以编译media_stream_video,得到所需要的文件:nmf、pexe等。

Makefile文件代码:

[html] view plain copy
  1. # Copyright (c) 2013 The Chromium Authors. All rights reserved.  
  2. # Use of this source code is governed by a BSD-style license that can be  
  3. # found in the LICENSE file.  
  4.   
  5. # GNU Makefile based on shared rules provided by the Native Client SDK.  
  6. # See README.Makefiles for more details.  
  7.   
  8. VALID_TOOLCHAINS :pnacl glibc clang-newlib win  
  9.   
  10. NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../../..)  
  11.   
  12. TARGET = media_stream_video  
  13.   
  14.   
  15. include $(NACL_SDK_ROOT)/tools/common.mk  
  16.   
  17.   
  18. LIBS = ppapi_gles2 ppapi_cpp ppapi pthread  
  19.   
  20. CFLAGS = -Wall  
  21. SOURCES = media_stream_video.cc  
  22.   
  23. # Build rules generated by macros from common.mk:  
  24.   
  25. $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))  
  26.   
  27. # The PNaCl workflow uses both an unstripped and finalized/stripped binary.  
  28. # On NaCl, only produce a stripped binary for Release configs (not Debug).  
  29. ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG))))  
  30. $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS)))  
  31. $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))  
  32. else  
  33. $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS)))  
  34. endif  
  35.   
  36. $(eval $(call NMF_RULE,$(TARGET),))   

启动本地服务器:

1、进入到......\nacl_sdk\pepper_49\tools目录,其他文件中启动,比如examples目录中用httpd.cmd,又如getting_started目录中用make serve

命令,其实都是启动的tools目录下的httpd.py文件;

2、运行httpd.py文件;

PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI

如上图则启动成功。

当然这只是启动服务器而已,当我们实际用的时候是在我们要用的目录启动,比如我们的测试目录是:

E:\SDK\nacl_sdk\pepper_49\media_stream_video;那么我们在该目录下新建一个httpd.cmd文件,代码:

[html] view plain copy
  1. @echo off  
  2. setlocal  
  3.   
  4. PATH=%CYGWIN%;%PATH%  
  5. REM Use the path to this file (httpd.cmd) to get the  
  6. REM path to httpd.py, so that we can run httpd.cmd from  
  7. REM any directory.  Pass up to 9 arguments to httpd.py.  
  8. python %~dp0\..\tools\httpd.py %1 %2 %3 %4 %5 %6 %7 %8 %9  
启动成功之后在,chrome浏览器输入地址http://localhost:5103/;

前提在E:\SDK\nacl_sdk\pepper_49\media_stream_video目录下存在几个文件:background.js、common.js、example.js、icon128.png、

index.html、manifest.json,这几个文件在.......examples\api\media_stream_video目录下。效果跟上文

PPAPI开发之路(二)在VS 2013上编译media_stream_video例子一样

注意:

你可能会出现控件没加载出来,如果是这样请通过命令chrome://nacl检查pnacl是否安装成功,如果是这样:

PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI


就需要安装pnacl,输入命令chrome://components/,最开始的版本是0.0.0.0,然后点击“检查是否有更新”,更新之后如图:

PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI


PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI

版权声明:本文为博主原创文章,未经博主允许不得转载。