zoukankan      html  css  js  c++  java
  • 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文件代码:

    # 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、进入到...... acl_sdkpepper_49 ools目录,其他文件中启动,比如examples目录中用httpd.cmd,又如getting_started目录中用make serve

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

    2、运行httpd.py文件;


    如上图则启动成功。

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

    E:SDK acl_sdkpepper_49media_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..	oolshttpd.py %1 %2 %3 %4 %5 %6 %7 %8 %9
    启动成功之后在,chrome浏览器输入地址http://localhost:5103/;

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

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

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

    注意:

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



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




  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049164.html
Copyright © 2011-2022 走看看