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,然后点击“检查是否有更新”,更新之后如图:




  • 相关阅读:
    Day 10 网络基础
    Day9 编码和网络基础 Encoding and network
    Day 8 数据与进制转换
    Day 7 文件管理补充和练习 File management & exercises
    5--kubernetes实战初入门
    4--k8s之资源管理 ; yaml语言
    3--二进制安装k8s
    kubernetes之安装集群图形化界面Dadhboard
    2--kubeadm安装k8s
    1--kubernetes简介及架构图
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049164.html
Copyright © 2011-2022 走看看