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

时间:2024-02-20 12:25:46

前言:

在进行下文之前,先介绍下发布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文件代码:

# Copyright (c) 2013 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.

# GNU Makefile based on shared rules provided by the Native Client SDK.
# See README.Makefiles for more details.

VALID_TOOLCHAINS := pnacl glibc clang-newlib win

NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../../..)

TARGET = media_stream_video


include $(NACL_SDK_ROOT)/tools/common.mk


LIBS = ppapi_gles2 ppapi_cpp ppapi pthread

CFLAGS = -Wall
SOURCES = media_stream_video.cc

# Build rules generated by macros from common.mk:

$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))

# The PNaCl workflow uses both an unstripped and finalized/stripped binary.
# On NaCl, only produce a stripped binary for Release configs (not Debug).
ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG))))
$(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS)))
$(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))
else
$(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS)))
endif

$(eval $(call NMF_RULE,$(TARGET),)) 

启动本地服务器:

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

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

2、运行httpd.py文件;


如上图则启动成功。

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

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

@echo off
setlocal

PATH=%CYGWIN%;%PATH%
REM Use the path to this file (httpd.cmd) to get the
REM path to httpd.py, so that we can run httpd.cmd from
REM any directory.  Pass up to 9 arguments to httpd.py.
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是否安装成功,如果是这样:



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