今年圣诞假期再添战力,《战地风云:恶名昭
在他十多年持之以恒的培训事业中创造了辉煌
你每湿一件事的胜天皆是有目标的吧
让小王非常不安
别提柔才有多拾我了
没差气天红了他一眼
再现好莱坞紧凑情节 射击大作《绝地任务》
不同网络操作系统间互联的管理
柬埔寨王国柴阿润河水电站工程测量的开展
电子装置的可靠性设计
操作系统安全漏洞分发软件WSUS
试论银行信息系统大集中模式下业务本地化的
巴萨与奥迪同样诞生于1899年
观看的差异??后现代视觉文化研究中的摄影艺
游戏回答没关系
手法配合超声中频治疗颈椎病120例
脉冲多普勒超声评价心室收缩功能新指标
[从恋传奇] 让雪暖和
工美专业美术字设计教学中存在的问题及对策
浅谈软件测试
是系统中广泛运用的基于管道设计的开源多媒体框架。概述了的架构.其基本的编程概念,讨论了基于框架开发3播放器的设计与实现方法。关键词:;多媒体框架:3播放器;插件3玛(,211171):.,—3.:;;3;-是一个功能大的开源的多媒体框架,它对底层的多媒体编解码器和硬件设备驱动进行了抽象和封装,提供了简单灵活的,降低了上层应用程序开发的难度,并且使得应用程序更易于维护。框架的功能涵盖了音频的输入输出以及视频的输入输出,因此基于可以开发各种各样的多媒体应用程序,包括音乐、视频播放器、录音机程序,以及移动设备中的照相机软件等。的一大显著特点就是其基于插件的模块化设计,如图所示。的系统架构可以分为两部分:核心模块和插件部分。把多媒体数据的输入、编解码处理以及输出都以插件模块集成到系统中。
插件以共享库的形式存在,在运行期间由动态加载,并被链接成一个管道。模块则为插件提供了一个集成框架,插件模块之间数据流的处理以及媒体类型的协商。圆圈囤应用程序陔心框架医亟团匝圃匝蔓司匝圈框;悟频驱动州视频驱动42驱动设备驱动-·图1的系统框架2编程基础2.1组件库收稿日期:2010-05—11—110一组件是中的一个重要对象,是插件在运行时的实例化。应用程序运行时,会根据媒体格式以及设备环境动态加载相应的插件,被实例化的组件对象就会有序地链接到一个管道中。根据插件功能的类型,其组件可以分为:(1)输入型组件,这种组件会向管道提供媒体数据,比如文件访问组件、声音获取组件等;(2)过滤型组件,它把从输入型组件中获取的媒体数据进行处理,比如进行格式转换、解复用-、复用、编解码等;(3)输出型组件,这类组件负责媒体数据的最后的输出,比如输出到音频设备、视频设备,以及输出到文件、网络等。组件在运行期有4种状态,并且只能在相邻的两个状态之间发生转换:(1)缺省状态—,所有的运行期的资源包括共享库以及内存等都没有分配;(2)准备状态—,此时运行期的资源已经被分配,但是还没有媒体数据;(3)暂停—,组件准备接收或者处理数据,组件此时接收到一个的数据后便阻塞,等待下一个状态;(4)播放状态—,和暂停状态类似,不同的是组件此时真正开始输出接收到的媒体数据。2.2管道箱柜是—个容器组件,用来组合其他的组件。去玩传奇管道是一种特殊的箱柜,它能够调度其容器中的所有组件。因为箱柜本身也是一个组件对象,因此可以组件的编程接同样适用于箱柜对象。比如,可以通过改变一个箱柜的状态,来改变其容器中的所有组件的状态。
箱柜对象也会向应用程序转发来自其容器中组件的总线消息,比如出错消息、标记消息、结束消息。管道是最顶层的箱柜对象。当把管道的状态设成暂停或者播放状态时,媒体数据便开始在管道的组件中流动,并且相应的组件开始处理数据。此时,便会为该管道开启一人工智能及识别技术个新的作线程。每个应用程序至少要含有一个管道对象。33播放器的设计3.1播放管道播放器管道的外部输入是3文件,与文件源插件—交互;管道的外部输出是扬声器,与音频输出插件交互;其余的插件包括解码、格式转换等都是过滤插件,负责数据处理。
播放管道的内部插件链接如图2所示。
图23播放器管道图(1)文件源插件,负责从3文件中读取字节流。组件采用的操作方式是模式,当管道处于工作播放状态时,由下一个3解码组件向—组件请求数据,组件根据指定的偏移量-和长度从3文件读取数据填充到结构体中,作为解码组件的输入数据。(2)解码插件,使用开源的3解码库来解码音频流。(3)音频格式转换插件,对解码后的音频流进行格式转换,支持整形到浮点的转换、位深度转换,以及音频通道数的转换www.gsno1.com。
“)音频重采样插件,通过和音频输出插件进行格式协商,对解码后的原始音频流进行重采样,生成输出设备所支持的采样频率。(5)音频输出插件,把原始的音频样本通过~驱动输出到音频设备。
(-)是目前系统中开源的音频设备驱动,负责音频流的输人输出。插件把重采样后的音频流通过驱动最终输出到扬声器121。
3.23元数据提取3歌曲的元数据分为歌衄基本信息和多媒体信息两类。基本信息包括歌曲名称、歌曲专辑名称、歌曲的艺术家、专辑的流派等。多媒体信息包含歌曲的播放时间、采样频率、帧速率等。
这些元数据都以3规范所定义的格式存储去3文件中,3播放器需要把这些信息提取出来,显示给用户131。的消息总线可以实现这一功能。每个管道对象都含有一个默认的消息总线,总线负责将播放线程中管道对象的消息转发给应用程序主线程,这样多媒体应用程序就可以忽略的多线程设计。消息总线上能够转发的消息类型是可以扩展的,预定义了一些消息类型,包括出错消息、媒体流的结束消息、元数据消息、组件的状态转换消息等。每当管道中的媒体流中出现一个元数据项时,管道对象就热血传奇游戏会发送元数据消息,表明发现了一个元数据项。随着文件源组件不断读取3数据。管道会不断地向总线对象转发该消息,应用程序根据提供的来解析这些数据项。
3.3播放列表管理播放列表是3播放器的基本特征之一。播放列表的管理方式有多种,可以用数据库来存储列表以及列表所包含的歌曲,也可以用文件的方式来存储它。使用3文件来管理播放列表是目前比较高效简洁的一种方式。3文件是一种文本文件,它本身不存储歌曲,只是提供了一个指向其他位置的音频文件索引聊。
3最初应用于播放器中,大多数播放器都支持这种播放列表格式。因此,基于3文件来管理播放列表,不仅存取效率高,可移植性也强,可以在不同的播放器之间导人导出。
43播放器的实现4.1构建播放器的管道严创建播放器的管道对象·,3->=(””);(3->);创建文件源组件+2(””,””);;,幸创建解码组件+,2(””,”—”);(=,-1):严创建音频格式转换组件,2(””,””);(=矾Ⅱ-1);,宰创建音频重采样组件·=(”—”,””):(=,-1)该网游这一点行啊;创建音频输出组件·=(””,””);·.;把组件添加到管道中·,((3->),);产链接管道中组件+,(,,,。,);4.2消息监听及处理,车在主线程中监听播放线程的消息总线·,2((3->));;产注册音频流结束消息的回调函数·,(,”::”,(.,.),3-);产注册元数据消息的回调函数吖.(,”=”。
一111—电脑编程技巧与维护—.,3-,);产注册音频总时长消息的回调函数·,(,”=”,3,3,0);严注册组件状态改变的回调函数叫(,”::—”,3,0);;4.3开发环境3播放器的开发环境是9.04,图形库使用的是+2.10.0,所依赖的订软件包是基本库一0.10.28,以及插件库—-0.10.28,-—-0.10.21,—8一-0.10.14,播放器的界面如图3所示。5结语讨论了如何利用的管道思想实现3播放器,包括基本的播放控制功能、元数据显示以及播放列表管理等。基于框架开发3播放器大大缩短了应用程序的开发周期,使应用程序不必关心下层的输入输出处理以及编解码。基于插件的模块化设计使得该3播放器具有很好的可扩展性:(1)利用提供的音频可视化效果插件,在3播放器中增加音频效果图功能。
在既有的播放管道中增加一个可视化分支,负责把音频数据渲染到屏幕窗中。播放管道中插件解码后得到音频数据被复制成两份,一份数据被输出到扬声器设备,一份数据被渲染到窗。(2)利用对媒体类型的自动检测功能,把3播放器扩展成一个音频播放器,能够播放多种音频格式,在运行时根据媒体类型自动加载相应的解码插件。图33播放器界面图参考文献[1,,.(;-(0.10.12.1).2.:1.-叫.-—,.3.:..3.4.:..3.窖电萍留屿皋牙弛附鹋鹋耩鹋留的蝴鹕毒离窖她离鹕搴昂窖均昂撰窖曲撰鹕搴鹋鹕窖她她离窖的昏茸她鼢窖均窖屿薄窖砭舜零痨鹕鹕秘磷鹞鹕牡秘撰祭鹕鹕离(上接第9页)画预设面板,里面有一些模板可以直接使用,以及刚刚创建的动画效果,如图5所示。再次新建一图层,插入一个新元件“花瓣”,然后选择需要运WOW网游动的动画预置,点击应用按钮,就会以该元件所在位置作为起始位置开始创建补间动画,如果按住键的同时单击应用按钮,即可把所在位置作为终点位置创建补间动画。
一112一图5为新元件添加预置动画另外,还可以从图层图标上看出哪层是利用自动关键帧记录的方法,哪层是利用传统的自己定义关键帧的方式创建的动画。
4结语探索了4中可以很方便地以调整矢量图的方式调整动画的路径,并且4有了非常强大的动画制作工具动画编辑器面板。
不但可以对每一个单独的属性进行详细的用新的动画编辑器工具调整,而且可以设置自定义缓动缓出的效果,应用给每一个属性。关键帧导航面板是对于使很重要的一个环节,以及将一个已经做好的动画存储为预置模板,并且反复使用。作者简介梁琨,女(1982一),助教,理学学士,研究方向:计算机多媒体技术。基于的3播放器开发作者:陈玲,作者单位:南京晓庄学院,南京,211171刊名:电脑编程技巧与维护英文刊名:年,卷(期):2010(14)参考文献(4条)1.2.3.4.;;。
上一篇:基于PXI总线的多路电源检测的研究与实现
下一篇:基于NS-2的蠕虫病毒仿真
Email: gsno1@gsno1.com ; 联系客服:021-71582223