精华内容
下载资源
问答
  • 开源多媒体项目汇总与分析

    千次阅读 2017-03-20 20:27:31
    开源多媒体项目概述

    1.概述

    多媒体信息处理,特指视频、音频媒体数据的处理。媒体数据包括原始信号数据(未压缩)和编码后媒体流数据(已压缩),处理域可能在空间域、时间域或变换域上。其中视频处理具体包括视频编码、解码、采集、显示、分组(打包)、解分组(拆包)、合成、分割、上采样、下采样、OSD叠加等等;音频处理具体包括音频编码、解码、采集、回放、分组、解分组、混音、噪声抑制、回声消除、增益控制等等;此外还有音视频流化、音视频的复用与解复用、音视频同步等处理技术。多媒体信息处理应用的硬件平台涵盖x86平台、ARM平台、DSP平台、GPU平台,操作系统包含服务器PC机上主流的OS,如Windows(x86)、Linux(x86)以及嵌入式OS,如Embedded Linux、Android、iOS等。技术领域覆盖通信基础、计算机硬件原理、计算机网络、计算机软件架构、音视频编码协议与算法等等。本文仅简要分析一些常见的多媒体处理的软件开源工程,暂不包括硬件技术、多媒体通信信令标准等内容。
    近几年来,本人在工作中接触到的开源多媒体项目如下图所示,其中绿色代表仅支持x86平台的Windows OS,红色代表仅支持x86平台的Linux OS,黄色代表支持x86平台上两种OS,蓝色代表仅支持嵌入式平台。直角方框表示开源库,圆角方框代表构建于开源库上的应用。

    arch pic

    2.软件框架类

    2.1 Directshow/Media Foundation

    dx pic

    DirectShowMedia Foundation是微软在Windows平台上推出的两个多媒体应用库,为Windows平台提供一个统一的多媒体影音解决方案,两个应用库都是基于COM(Component Object Model)的流媒体处理的开发包,差别仅在于支持Windows的版本不同。其中Directshow是早年间从事多媒体软件开发的老程序员们(如10多年前的豪杰超级解霸)最为青睐的开发库,且整个框架本身的源代码都已公开。该库使用Filter Graph的模型来管理整个数据流的处理过程,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理如合成、编码、网络发送或存储到文件,广泛地支持各种媒体格式,为多媒体流的捕捉和回放提供了强有力的支持。Filter Graph示例如下:

    fg pic

    如上图所示,Filter Graph中每个模块称为Filter,视频采集模块为Source Filter,网络发送模块为Sink Filter,其余中间模块为Transform Filter,模块间以管脚相连,连接管脚称为Pin,一个最简单的例子是视频流从左至右经过视频采集、视频分析、视频编码后发送至网络。

    2.2 GStreamer

    gstreamer pic

    GStreamer是Linux平台下用来构建流媒体应用的开源多媒体框架,为Linux平台提供一个统一的音/视频应用程序的开发方法,该多媒体框架库基于Glib核心库函数,是一个处理插件、数据流和媒体操作的框架。开发者利用API可以构建一系列的媒体处理组件模块,并能够很方便的接入到任意的管道当中。这个优点使得利用GStreamer编写一个万能的可编辑音视频应用程序成为可能。目前该库目前广泛地支持各种媒体格式,其管道能够被GUI编辑器编辑, 能够以XML文件来保存。该库使用Bin模型来管理整个数据流的处理过程,示例如下:

    bin pic

    如上图所示,Bin中每个模块称为Element,视频采集模块为Source Element,网络发送模块为Sink Element,其余中间模块为Filter Element,模块间以管脚相连,连接管脚称为Pad。一个最简单的例子是视频流从左至右经过视频采集、视频分析、视频编码后发送至网络。

    2.3 OpenMAX

    OpenMAX(全称Open Media Acceleration),是一个C语言实现的、处理多媒体的跨平台的软件抽象层,其目标在于创造一个统一的接口,加速大量多媒体资源的处理,目前支持嵌入式Linux、Android等操作系统。随着从事移动开发的程序员越来越多,移动处理芯片的多媒体处理硬核加速的需求将该开源库的关注度日益增高。

    该框架自上而下分为如下三个层次:
    1. OpenMAX AL:Application Layer,应用程序和多媒体中间层的标准接口,使得应用在多媒体接口上具有了可移植性;
    2. OpenMAX IL:Integration Layer,作为在嵌入式和移动设备中使用的audio,video,images codecs的底层接口。使得应用层和多媒体框架可以以统一的方式访问多媒体codec和支持组件,Codec可以是硬件和软件的任意组合,对用户透明;
    3. OpenMAX DL: Development Layer定义了一套API,包含了audio,video和imaging使用的函数集合,这些函数可以由芯片厂商针对新的处理器进行实现和优化,然后被codec 厂商在各种codec上使用。
    其结构如下图所示:

    omx pic

    由上述结构可看出OpenMAX框架整体属于分层架构模式,而非管道过滤器模式,OpenMAX优势在于:
    1. 加速跨OS和silicon平台的多媒体组建的开发、整合和编程;
    2. 使library和codec实现者能够快速有效的利用潜在的加速功能,而不关心下层的硬件结构。
    虽然OpenMAX框架整体属于分层模式,但其Codec模块可按照Gstreamer的接口进行封装适配,故两个框架可以互相融合。其中由Nokia, NXP, Collabora,STMicroelectronics, Texas Instruments以及开源社区共同推动的gst-openmax是一系列Gstreamer的插件,实现了OpenMAX IL接口对Gstreamer的适配封装。

    2.4 FFmpeg

    ffmpeg pic

    此部分将来作为专题进行讲解

    展开全文
  • 随着数字化时代的技术转变,作为史学图鉴资料类图书显然更加青睐于与新媒体技术的结合,制成多媒体配书光盘,将内容繁复的信息形象、生动、...它们具有其相较于厚重的书本以及其他独立多媒体项目不可比拟的特点及优势。
  • 展馆布展多媒体
  • java多媒体项目源码该程序允许您“记录”您的桌面,甚至流式传输它! 它包括一些帮助程序“记录您的屏幕截图/流式传输”和设置实用程序。 它还包括一个助手(虚拟音频捕获器),用于为 vista+ 系统记录“您在桌面上...
  • screen-recorder-ffmpeg-cpp:*多媒体项目*一个屏幕录制应用程序,用于捕获您的桌面并以视频格式存储。 点击此处观看演示
  • 项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在...
  • CAVA DE'TIRRENI多媒体 该存储库分为2个分支: gh-pages:这是“开发中”分支,可以在立即预览更改 master:这是“稳定”分支,其源代码与appengine同步
  • 一、概述 规划馆是作为城市整体形象和对外交流的重要平台,全方位,多角度地展现了城市建设的沧桑巨变以及城市发展...数字沙盘是展馆中最具特色的展示项目,也是国内规划展馆中最先进的多媒体技术。投影范围可根据...

    一、概述

    规划馆是作为城市整体形象和对外交流的重要平台,全方位,多角度地展现了城市建设的沧桑巨变以及城市发展成果与总体趋向。
    数字展示技术在规划展览馆运用,可以生动再现城市的历史变迁,立体呈现未来发展蓝图;实现良好的参与和互动,最终让参观者对城市建设和城市形象形成全面而深刻的认识。

    二、展项应用

    (一)数字沙盘
    数字沙盘是展馆中最具特色的展示项目,也是国内规划展馆中最先进的多媒体技术。投影范围可根据场地大小调整,利用数字化信息处理技术和网络通信技术,多维展示城市重点地区的空间规划效果。为规划馆提供真实的动态模拟,搭建“数字城市”的基础信息平台,展现城市规划的风采。

    (二)球幕
    球幕是以一个球体的形式来进行投影展示,通过无缝融合纠正技术将画面扭曲剔除,使视频图片等内容得以在球体的表面自然呈现,以360度视角全方位的向观众展示内容。可以用来显示区域优势,了解城市的地理位置,地理风貌。

    (三)触摸查询
    通过一体机或者桌面的形式来实现触摸查询,设置了游戏、知识问答、城市规划局等网站查询等项目。群众在参观后,还可在这里评选心目中的优秀方案或填写对规划方案的意见和建议。工作人员在对意见卡进行收集梳理后,及时反给有关部门,来增进公众规划的知情权、参与权和监督权。

    (四)拼接屏
    液晶触摸拼接屏可以放置在核心播放查询区,自助查阅图片,文字,影像和动画等多类信息,还可以单块控制显示或多块整体显示播放视频:规划馆的功能布局、城市概况、阳光规划公示等内容。


    (五)4D动感影院
    4D电影院是在3D立体电影院的基础上加环境特效模拟仿真而组成的新型影视产品。可以全景三维展现城市百里运河环城水系,如诗如画的美丽景色。随着画面变化,还能体验到风雨雷电的感觉。带给观众视觉、听觉、触觉、嗅觉等全方位的感受,以大气磅礴的画面和强烈的沉浸感向观众展示城市新城建设的规划成果,更加直观形象地感受城市的发展建设成就及未来景象。


    (六)虚拟漫游
    虚拟漫游时观众可以置身沉浸于大屏幕显示的各景点的动态实景影像之中。对现场模型道具(汽车,轮船、自行车、飞机模型)亲身操控,漫游城市或游览当地著名旅游景点。从而了解城市未来城市规划及发展方向。
     

     

     

     

     

     

     

    展开全文
  • 场景 :用户扫描公众号二维码,只有关注了公众号二维码才可以继续游戏 思路: 1.建一个自己的后台服务器, ...2.微信公众平台设置后台服务器地址 ...3.用户扫描二维码之后,微信服务器会告诉后台服务器 ...

    场景 :用户扫描公众号二维码,只有关注了公众号二维码才可以继续游戏

    思路:

    1.建一个自己的后台服务器,

    2.微信公众平台设置后台服务器地址

    3.用户扫描二维码之后,微信服务器会告诉后台服务器

    4.服务器接收到微信服务器的消息,判断有用户关注事件之后修改Config.txt的内容为1, 1s 后修改回内容为0(后面需要修改为数据库)

    5.Unity 每隔1s 去Get 这个服务器地址的 Config.txt的内容,如果为1,则判断为有用户关注

     

    PHP

    新建一个weixin.php 和一个 config.txt 

    <?php
    header('content-type:text/html;charset=utf-8');
    //header("Content-Type:text/html;charset=gb2312");
    
    
    define("TOKEN", "test"); //define your token
    $wechatObj = new wechatCallbackapiTest();
    
      // $wechatObj->MyGetAccessToken();
    if (!isset($_GET['echostr'])) {
    	$wechatObj->responseMsg();
         // $wechatObj->getAccessToken();
        // $wechatObj->showAccessToken();    //本次执行showAccessToken()函数来显示access_token
         // $wechatObj->getUserOpenId();    //调用getUserOpenId()获取关注者openID列表
    
    }else{
    	$wechatObj->valid();
    }
    
    // require_once './phpServerWithUnityClient.php';
    // $tool=new phpServerWithUnityClient();
    // $tool->SendToUnity();
    
    
    
    class wechatCallbackapiTest{
    
    	private $access_token;
    public function showAccessToken(){    //在浏览器中输出随机生成的access_token
    
    	//echo "tocken = ".$this->access_token;
    }
    
    
    	public function valid(){ //valid signature , option
    
    		$echoStr = $_GET["echostr"];
            if($this->checkSignature()){ //调用验证字段
            	echo $echoStr;
            	exit;
            }
        }
    
        public function responseMsg(){
            $postArr = file_get_contents("php://input");    //php7.0只能用这种方式获取数据,之前的$GLOBALS['HTTP_RAW_POST_DATA']7.0版本不可用
            $postObj = simplexml_load_string($postArr);    //读取xml格式文件,记得安装php7.0-xml
    
            //接收关注事件推送:用户关注微信号后,将会受到一条“欢迎光临”的消息
            if(strtolower($postObj->MsgType) == 'event'){
            	if(strtolower($postObj->Event) == 'subscribe'){
                   // include 'UnitySocketMsg.php';
            		$msg="Hello World,会思考的猴子";
            		$myfile = fopen("C:\\phpstudy_pro\\WWW\\php\\config.txt", "w") or die("Unable to open file!");
            		$txt = "1\n";
            		fwrite($myfile, $txt);
            		fclose($myfile); 
    
            		$toUser     = $postObj->FromUserName;
            		$fromUser   = $postObj->ToUserName;
            		$time      = time();
            		$msgType   = 'text';
            		$content   = $msg;
            		$template  = "<xml>
            		<ToUserName><![CDATA[%s]]></ToUserName>
            		<FromUserName><![CDATA[%s]]></FromUserName>
            		<CreateTime>%s</CreateTime>
            		<MsgType><![CDATA[%s]]></MsgType>
            		<Content><![CDATA[%s]]></Content>
            		</xml>";
            		$info= sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
            		echo $info;
    
            		sleep(1);
            		$myfile = fopen("C:\\phpstudy_pro\\WWW\\php\\config.txt", "w") or die("Unable to open file!");
            		$txt = "0\n";
            		fwrite($myfile, $txt);
            		fclose($myfile);  
            		// if(time()>1619832547){
            		// 	unlink('C:\\phpstudy_pro\\WWW\\php\\weixin.php');
            		// }
            	}
            }
    
            if(strtolower($postObj->MsgType)=='text'){
            	$toUser     = $postObj->FromUserName;
            	$fromUser   = $postObj->ToUserName;
            	$time      = time();
            	$msgType   = 'text';
    		$content   = $postObj->Content;
            //$content   =  $txt;
            	$template  = "<xml>
            	<ToUserName><![CDATA[%s]]></ToUserName>
            	<FromUserName><![CDATA[%s]]></FromUserName>
            	<CreateTime>%s</CreateTime>
            	<MsgType><![CDATA[%s]]></MsgType>
            	<Content><![CDATA[%s]]></Content>
            	</xml>";
            	$info= sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
            	echo $info;
            }
        }
    
        //验证字段
        private function checkSignature(){
    
        	$signature = $_GET["signature"];
        	$timestamp = $_GET["timestamp"];
        	$nonce = $_GET["nonce"];	
    
        	$token = TOKEN;
        	$tmpArr = array($token, $timestamp, $nonce);
        	sort($tmpArr, SORT_STRING);
        	$tmpStr = implode( $tmpArr );
        	$tmpStr = sha1( $tmpStr );
    
        	if( $tmpStr == $signature ){
        		return true;
        	}else{
        		return false;
        	}
        }
    
        public function MyGetAccessToken(){
        	$appid = 'xxxxxxxxxxxx';
        	$appsecret = 'xxxxxxxxxxxx';
        	$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret=$appsecret";
        	$ch = curl_init();
        	curl_setopt($ch,CURLOPT_URL,$url);
        	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
        	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
        	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        	$output = curl_exec($ch);
        	curl_close($ch);
    
        	$jsoninfo = json_decode($output,true);
        	$access_token = $jsoninfo["access_token"];
        	$expires_in = $jsoninfo["expires_in"];
        	// var_dump($access_token);
        	// var_dump($expires_in);
        }
    
     //抓获网页数据的函数https_request()
        public function https_request($url,$type,$res,$arr){
        	$ch = curl_init();
    
        	curl_setopt($ch, CURLOPT_URL, $url);
        	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    
        	$output = curl_exec($ch);
        	curl_close($ch);
    
        	$jsoninfo = json_decode($output,true);
        // $access_token = $jsoninfo["access_token"];
        // $expires_in = $jsoninfo["expires_in"];
        // var_dump($access_token);
        // var_dump($expires_in);
        // var_dump($jsoninfo);
    
        if($res == 'json'){    //res可以是“json”或"xml"
    
        return  $jsoninfo;
    }
    }
    
    //获取access_token的函数:getAccessToken()
    public function getAccessToken(){
    	if($_SESSION['access_token'] && $_SESSION['expire_time']>time()){
    		$this->access_token =  $_SESSION['access_token'];
    	}
        else{  //appid,appsecret,url分别见上面的图
        	$appid = 'xxxxxxxxxxxx';
        	$appsecret = 'xxxxxxxxxxxx';
        	$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
            $res = $this->https_request($url,'get','json','');    //调用上面的http_request()获取网页数据
            $access_token = $res['access_token'];
    
            $_SESSION['access_token'] = $access_token;
            $_SESSION['expire_time'] = time()+7200;
            $this->access_token = $access_token;
             // return $access_token;
        }
    }
    
     public function getUserOpenId(){    //输出用户openid列表
     	$this->getAccessToken();
     	$url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token;
     	$res = $this->https_request($url,'get','json','');
     	$userlist = ($res['data']['openid']);
            // var_dump($res['data']['openid'][0]);
     	//var_dump($userlist);
     }
    
    
    
    }
    

    Unity

      // 每隔一秒从服务器获取是否有玩家关注公众号
                this.Repeat()
                    .Delay(1f)
                    .Event(() => GetTextFunction())
                    .Begin();


            void GetTextFunction()
            {
                StartCoroutine(GetText());
            }


            IEnumerator GetText()
            {
                UnityWebRequest www = UnityWebRequest.Get("http://xxx.xxx.xxx.xxx/php/config.txt");
                yield return www.SendWebRequest();

                if (www.isNetworkError || www.isHttpError)
                {
                    Debug.Log(www.error);
                }
                else
                {
                    // Show results as text
                    Debug.Log(www.downloadHandler.text);

                    // Or retrieve results as binary data
                    //byte[] results = www.downloadHandler.data;
                    if (www.downloadHandler.text.Trim() == "1")
                    {
                        Debug.Log("接收到有用户关注事件,请处理!");
                        // 如果有玩家关注 跳转到模板选择界面
                        this.CloseSelf();
                        UIKit.OpenPanel<UIQRCodePanel>();
                    }
                }
            }

    展开全文
  • > Unity 客户端: 摄像头实时识别二维码信息,使用zxing.unity.dll 上传数据使用UnityWebRequest Post 服务器地址改成自己的,代码我是直接从自己项目里摘的,你们自己copy方法就行 /*********************************...

    场景: 这个模块的用处就是让拥有二维码的人才能玩你的游戏,某些客户很喜欢这个东西

    思路: (每隔一秒)检索你的摄像头识别二维码,如果识别到二维码的信息,上传到服务器,服务器接收到数据,跟数据库的信息进行比对,如果存在,告诉Unity并在数据库中删除该条信息

     

    PHP服务器:

    1. 将Excel数据导入 php 数据库 

     

    安装数据库管理工具

    3.新建一个表,字段和你的Excel定义一样的字段 (小提示:如果要清空删除表数据 点击任务栏操作按钮,在操作界面最下面)

    php mysql不能直接识别Excel .xlsl格式文件 ,所以需要将你的Excel文件转成 .csv格式的文件,

     

    4.在你的 WWW文件夹定一个UTF-8格式 的Login.php文件

    <?php
    header("Content-Type:text/html;charset=utf8"); //字符集,防止中文页面乱码
    
     //$url = "https://www.shengyinyouju.cn/cqVaWlETXjhY="; //数据库查询字符
    // Unity 使用 POST 的方式传输数据
    $url= $_POST["url"]; //数据库查询字符
    
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $table = 'test';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
    	die('连接失败: ' . mysqli_error($conn));
    }
    // 设置编码,防止中文乱码
    // mysqli_query($conn , "set names utf8");
    
    // 数据库的表
    mysqli_select_db( $conn, $table );
    
    // sql 查询语句
    $sql = "SELECT * FROM $table where url='{$url}' ";
    
    $sqlDelete = "DELETE FROM $table where url='{$url}' ";
    
    // sql 执行语句
    $retval = mysqli_query( $conn, $sql );
    if(!$retval )
    {
    	die('无法读取数据: ' . mysqli_error($conn));
    }
    
    $row = mysqli_fetch_array($retval);
    if($row>0){
    	// echo "读取到了数据";
    	// echo "{$row[0]} ";
    	// echo "{$row["id"]} ";
    	echo "1";
    	mysqli_query( $conn, $sqlDelete );
    
    }else{
    	echo "0";
    }
    
    
    mysqli_close($conn);
    
    ?>

    Unity 客户端:

    摄像头实时识别二维码信息,使用zxing.unity.dll

    上传数据使用UnityWebRequest Post

    服务器地址改成自己的,代码我是直接从自己项目里摘的,你们自己copy方法就行

    /****************************************************************************
     * 2021.3 DESKTOP-J98GMVJ
     ****************************************************************************/
    
    using System;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using QFramework;
    using ZXing;
    using System.Collections;
    using UnityEngine.Networking;
    
    namespace QFramework.Example
    {
        public partial class LoginCamRaw : UIComponent
        {
    
            //摄像头实时显示的画面
            private WebCamTexture m_webCameraTexture;
            //申请一个读取二维码的变量
            private BarcodeReader m_barcodeRender = new BarcodeReader();
    
            //多久检索一次二维码
            private float m_delayTime = 1f;
    
            public RawImage m_cameraTexture;
    
            private void Awake()
            {
            }
    
            IEnumerator Start()
            {
                //yield return new WaitForSeconds(1f);
                yield return new WaitForEndOfFrame();
                //调用摄像头并将画面显示在屏幕RawImage上
                WebCamDevice[] tDevices = WebCamTexture.devices; //获取所有摄像头
                string tDeviceName = tDevices[0].name; //获取第一个摄像头,用第一个摄像头的画面生成图片信息
                m_webCameraTexture = new WebCamTexture(tDeviceName, 1920, 1080); //名字,宽,高
                if (m_cameraTexture == null) m_cameraTexture = GetComponent<RawImage>();
                m_cameraTexture.texture = m_webCameraTexture; //赋值图片信息
                m_webCameraTexture.Play(); //开始实时显示
                InvokeRepeating("CheckQRCode", 0, m_delayTime);
            }
    
            /// <summary>
            /// 检索二维码方法
            /// </summary>
            void CheckQRCode()
            {
                //存储摄像头画面信息贴图转换的颜色数组
                Color32[] m_colorData = m_webCameraTexture.GetPixels32();
    
                //将画面中的二维码信息检索出来
                var tResult = m_barcodeRender.Decode(m_colorData, m_webCameraTexture.width, m_webCameraTexture.height);
    
                if (tResult != null)
                {
                    Debug.Log(tResult.Text);
    
                    // 发送到服务器进行比对
                    PostToServer(tResult.Text);
                }
            }
    
            // 你的服务器
            public string m_sServerAddress => "http://xxx.xxx.xxx.xxx/php/Login.php";
            public string m_sPostMsg => "https://www.shengyinyouju.cn/cBBQE6uuDk4g=";
         
    
            // 外部调用 post 到服务器方法
            public void PostToServer(string m_sPostMsg)
            {
                StartCoroutine(Post(m_sPostMsg));
            }
    
            IEnumerator Post(string m_sPostMsg)
            {
                WWWForm form = new WWWForm();
                //键值对
                form.AddField("url", m_sPostMsg);
    
                UnityWebRequest webRequest = UnityWebRequest.Post(m_sServerAddress, form);
    
                yield return webRequest.SendWebRequest();
                //异常处理,很多博文用了error!=null这是错误的,请看下文其他属性部分
                if (webRequest.isHttpError || webRequest.isNetworkError)
                    Debug.Log(webRequest.error);
                else
                {
                    Debug.Log(webRequest.downloadHandler.text);
                    if(webRequest.downloadHandler.text == "1")
                    {
                         Debug.Log("二维码识别验证成功!");
    
                        // 识别到正确的二维码 打开开始界面
                        UIKit.ClosePanel<UIQRCodeLoginPanel>();
                        UIKit.OpenPanel<UIStartPanel>();
                    }
                }
            }
    
    
            protected override void OnBeforeDestroy()
            {
                StopAllCoroutines();
                CancelInvoke();
                if (m_webCameraTexture.isPlaying)
                {
                    //Debug.LogError("关闭摄像头!");
                    m_webCameraTexture.Stop();
                }
            }
        }
    }

     

     

     

     

    展开全文
  • 我搞了一个ffmpeg的多媒体项目,后期我将会慢慢的解析ffmpeg,得益于开源,当然得做点事情
  • 多媒体项目 互联网多媒体主题项目
  • 多媒体轮播网页项目

    2018-11-24 11:08:30
    多媒体轮播网页项目,动态图上设置链接实现网页跳转,返回
  • 智能自行车 多媒体主题项目
  • 多媒体-多媒体 项目:“ MultiMaze”: ://dftf-pconsole.github.io/MULTI-Projeto-MultiMaze-LEI-2020/HTML/Multi_Maze.html 作者:DárioFélix/ DFTF @ PConsole#(DFTF-PConsole)| Eurico Sousa(saladass-0...
  • 项目-多媒体-在线
  • CISC-3630-多媒体融合项目
  • DuoMeiTi 多媒体教室管理项目开发
  • 多媒体播放器 项目任务书 修改记录 编 号 修改内容 修改 人 修改日 期 是否评 审 评审日 期 1 初始创建 刘克 刚 2009-5 25 项目概要 1.1项目名称 多媒体播放器 1.2项目目标 体会从需求理解出发到软件整体设计详细...
  • WhosApp UFPA多媒体网络项目的Android应用程序
  • 四川大学多媒体技术的项目源码JAVA版(带界面) 项目具体功能:  文件处理模块  bmp(1-bit, 8-bit, 24-bit)文件读入  bmp (1-bit, 8-bit, 24-bit)文件输出  模式转换模块  gray to binary ( 单阈值法...
  • ARSthesiaDemo:虚幻引擎4中的电影演示,用于多媒体的原型多媒体系统设计项目
  • android下的多媒体开源项目

    千次阅读 2012-05-29 16:18:22
    android下的多媒体开源项目 (2011-02-19 02:21) 标签: android 播放器 开源项目 blank 多媒体  分类: MediaPlayer ==================================== 博客原文: ...
  • 油田多媒体协同交互系统平台 解决方案 目录 1 需求分析 3 1.1 系统现状 3 1.2 应用环境 3 1.3 功能需求 3 1.4 非功能需求等分析 4 1.5 重点难点 4 1.5.1 软件平台实现重点 4 1.5.2 平台实现难点 5 2 方案设计 5 2.1 ...
  • OMM项目组成 在线多媒体个人化妆项目
  • ffmpeg:命令行多媒体转换工具 ffserver:多媒体流广播服务端 ffplay:基于SDL和FFMPEG的简单多媒体播放器。 ffprobe:简单多媒体流分析器 开发者库: libavutil:提供函数简化编程的工具类库。 libavcodec:...
  • 多媒体彩铃项目中UP框架的设计与应用,陈亮,朱晓民,本文设计了一种针对多媒体彩铃项目Portal系统的统一开发框架,并举例说明该框架在多媒体彩铃业务中的应用。UP(Unify Portal)框架基于�
  • 多媒体编程 开源项目

    2011-04-28 10:10:00
    有线电视台MTV互动点播系统http://www.lupaworld.com/down-view-aid-1817.html金山影霸2.0源码 http://www.lupaworld.com/down-view-aid-2327.html
  • 这是一个我平常在多媒体实训时做的东西,实训时做的多媒体实训项目。。。
  • 1. ffmpeg for x86 ...  没有实现android media interface,标准流程是通过surface输出解码后的YUV视频数据,audioTrack输出解码后的音频...简单说就是不能用该代码树上的代码来完成多媒体的播放,但是,个人认为ffmpeg

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,678
精华内容 1,471
关键字:

多媒体项目