为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 基于P2P网络的AVS流媒体播放器的设计与实现(可编辑)

基于P2P网络的AVS流媒体播放器的设计与实现(可编辑)

2017-09-20 37页 doc 71KB 28阅读

用户头像

is_482581

暂无简介

举报
基于P2P网络的AVS流媒体播放器的设计与实现(可编辑)基于P2P网络的AVS流媒体播放器的设计与实现(可编辑) 厦门大学 硕士学位论文 基于P2P网络的AVS流媒体播放器的设计与实现 姓名:肖力 申请学位级别:硕士 专业:电路与系统 指导教师:郭东辉;李晓潮 20090801摘要 近年来,随着多媒体技术的发展,先后有多个数字图像编解码标准相继出现。 作为目前世界先进音视频压缩编解码标准之一的,由于与其它国际标准如 .和./相比,计算复杂度更低,加之专利费用低等优势,使得 其产业链在近几年内逐渐成熟,并有着很好的发展和应用前景。 多媒体播放器是验证和推广音...
基于P2P网络的AVS流媒体播放器的设计与实现(可编辑)
基于P2P网络的AVS流媒体播放器的设计与实现(可编辑) 厦门大学 硕士学位 基于P2P网络的AVS流媒体播放器的设计与实现 姓名:肖力 申请学位级别:硕士 专业:电路与系统 指导教师:郭东辉;李晓潮 20090801摘要 近年来,随着多媒体技术的发展,先后有多个数字图像编解码相继出现。 作为目前世界先进音视频压缩编解码标准之一的,由于与其它国际标准如 .和./相比,计算复杂度更低,加之专利费用低等优势,使得 其产业链在近几年内逐渐成熟,并有着很好的发展和应用前景。 多媒体播放器是验证和推广音视频编解码标准的重要平台。目前通过互联网 广泛传播的音视频节目中大部分采用的是、、.等编码格式, 格式很少出现。究其原因,除了标准诞生时间较短,以及编码的 节目片源较为匮乏之外,更重要的是目前市面上能够支持媒体文件的播放 器数量很少。因此播放器特别是流媒体播放器的缺乏成为了阻碍 标准 推广的一个重要因素。 本文的研究是针对视频的流媒体播放器的设计与实现。以多平台的开 源多媒体播放器为基础,通过对播放器的插件架构及其数据读取、封装、 解码的流程的分析,设计视频流格式解析插件和视频解码插件。格式解析 插件负责接收本地视频流,解码插件则主要负责解码处理由格式解析插件 传递过来的数据,之后交给显示插件从而显示输出,最终实现了支持视频 格式的播放器,并通过移植得以在基于嵌入式平台上实现。同时,基于 的搜索和下载的优势,设计匿名管道用以媒体数据的传输,并通过为 播放器设计针对网络的流解析插件,最终实现了流媒体播放的功能。 本论文的特色以及创新之处主要体现在以下几点: .视频播放器的研究是近几年才兴起的热点,本文创新性地在 的基础上设计了支持视频的播放器。 .采用技术,实现数据流的多源下载和实时在线播放功能,具 有下载速率快、片源丰富等优点。 .和都有着优良的性能和彻底开放的源码,不需要支付任 何费用,为开发基于的流媒体播放器提供了便捷。 关键词:流媒体播放器,,,, , . .. ./, ,,. , . ,. , . .. . , ,, : . ,., , , . :’,.. . ’ . . , . , :厦门大学学位论文原创性声明 本人呈交的学位论文是本人在导师指导下,独立完成的研究成 果。本人在论文写作中参考其他个人或集体己经发表的研究成果,均 在文中以适当方式明确标明,并符合法律规范和《厦门大学研究生学 术活动规范试行》。 另外,该学位论文为 课组 的研究成果,获得 课题组经费或实验室的 资助,在 实验室完成。请在以上括号内填写课 题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特 别声明。 声明人签名: 殇力 , 年月厦门大学学位论文著作权使用声明 本人同意厦门大学根据《中华人民共和国学位条例暂行实施办 法》等规定保留和使用此学位论文,并向主管部门或其指定机构送交 学位论文包括纸质版和电子版,允许学位论文进入厦门大学图书 馆及其数据库被查阅、借阅。本人同意厦门大学将学位论文加入全国 博士、硕士学位论文共建单位数据库进行检索,将学位论文的标 题和 摘要汇编出版,采用影印、缩印或者其它方式合理复制学位论文。 本学位论文属于: .经厦门大学保密委员会审查核定的保密学位论文, 于 年 日解密,解密后适用上述授权。 月 / ?.不保密,适用上述授权。 请在以上相应括号内打“?”或填上相应内容。保密学位论文 应是已经厦门大学保密委员会审定过的学位论文,未经厦门大学保密 委员会审定的学位论文均为公开学位论文。此声明栏不填写的,默认 为公开学位论文,均适用上述授权。 声明人签名:角力 秒?年月日第一章绪论 第一章绪论 .研究背景和意义 流媒体 是指视频、声音和数据通过实时传输协议以连续流 的方式顺序从源端向目的端传输,而目的端只需接收到一定数据缓存后就可以立 即播放的多媒体应用】。流媒体技术与普通的多媒体相比,特点在 于首先基于 特殊的流媒体传输技术,并对流媒体数据格式也有着特定的要求。 流媒体传输协议可以在网络通信的网络层,传输层以及应用层来实现。目前 常用的协议主要基于应用层,如实时传输协议、实时传输控制协 议、资源预订协议【】、微软媒体服务协议【和超文本传输 协议等。 传统的流媒体传输模型多为/服务器/客户端模式,如微软公司的? 和公司的 随后辅以组播】和 【技术来解决服务器 带宽瓶颈问题。随着互联网用户数的大量增长,服务器端带宽已经成为流媒体技 术发展的主要障碍。传统流媒体系统逐渐不能满足需求,从而基于技术 】 的流媒体相关技术开始慢慢引起研究人员的重视。技术的特点在于:系统中 的每个成员直接从其它成员而不是从服务器的参与中受益,系统中的成员同时扮 演服务器与客户端的角色,系统应用的用户能够意识到彼此的存在,从而构成一 个虚拟或实际的群体。 年左右,技术在流媒体传输领域开始得到关注【】。近几年来, 出现了一大批商用流媒体传输系统,包括早期的、】 和 等网络电视模型,以及以国内的、、 和国外的、、等为代表的基于 直播技术的第二代网络电视,以及注重点播技术的、和 等第三代网络电视。根据全国第次互联网调查报告年统计显 示,占.%的网民选择利用流媒体下载软件的方式来观看网络视频, 仅次于通过视频网站直接浏览的方式。基于网络的流媒体播放器的设计。实现 相对于多媒体巨大的数据流量来说,目前的网络带宽是远远不够的,因此实 现流媒体传输必须采用先进高效的压缩算法将多媒体数据转为适合流式传输的 特定文件格式。当前主流文件格式有:微软的 、 公司的格式、公司的格式、国际电联 .提出的.格式、国际标准化组织和国际电工委员会】 提出的.标准等。与此同时,我国提出的信源编解码标准 发展迅速,在互联网上的应用已经逐渐成熟,且在等流媒 体领域中开始得到广泛关注,从而得以在流媒体传输领域崭露头 角。 是我国具有自主知识产权的第二代信源编码标准,目标服务于高分辨率 数字广播、无线宽带多媒体通讯和互联网宽带流媒体等应用。其中?《信 息技术先进音视频编码第部分:视频》以下称为视频标准已经获得国家 标准化管理委员会批准,于年月同开始实施。年月,该部分正 式获得国际电联.批准,成为国际标准四个可选视频编码格式之一 】。日前工作组已经开始启动制定第二代标准,已经成为 全球范围内最有可能成为事实标准的第二代音视频编码标准】。作为一套适应 面广泛的技术标准,标准的技术性能先进,编码效率比.高~倍 ,与./标准和.标准编码效率相当,技术更为简洁。 标准一方面基于自主技术和部分公开构建的开放标准,较好地解决了知识 产权许可的问题,另一方面又在专利收费上较.等标准又具有绝对优势。 近年来,标准逐渐成为国内研究的热点。产业链已初步形成,很多 新技术、新产品不断面世。联合信源和上广电已经推出基于标准的编码器 】;展讯公司于年推出低成本的标清/.解码核芯片; 博通公司展出了支持中国标准的高清单芯片,以及基于该芯片的 数字机顶盒样机】;上海龙晶公司展出了高清和标清芯片产品等。与此同 时,支持标准的流媒体系统也同步发展,中兴通讯、阿尔卡特朗讯等公司 已经开发了支持标准的系统,并开始在国内的一些城市试用: 年广视通达公司旗下的网络播放平台开始采用标准,标志着 标准在流媒体领域实现商用。然而,目前国内基于格式的通用播 放器研究还不多】】。因此,实现支持标准的流媒体系统,对于促 第一辛绪论 进标准的普遍应用和产业化进程具有一定的实际价值。 综上所述.研究并实现基于网络的流媒体播放系统,既可咀为 标准提供评澳检验的平台,也可以推广和普及在互联网的应用。本文在深 入研究多媒体播放器的基础上设计了支持视频格式的解码插件, 并在的网络的架构基础上,设计匿名管道用以进程问的媒体数据传 输,最终实现了一款基于网络的流媒体播放器。 .流媒体播放器的实现方案 大多数流媒体播放器采用传统的媒体播放器架构,即插件架构,只是在网 络媒体数据和格式上有所不同。插件是近年来软件设计领域十分常见的一种技 术。采用插件架构将有利于编写具有良好的扩充和定制功能的应用程序,其本质 是在不修改程序主体的情况下对软件功能进行加强【】。常见的播放器的通 用架构如图.。 啦??;口 播放器核心架构帛插仲管理 .簿耘一 鬻 ...一 图:播放器的插件架构示意图 如图所示,文件系统负责对文件或流的载入和打开;格式解析插件负责音 视频的分流音频流和视频流、文件格式的识别等;解码插件对应的是各种音视 频的解码功能;显示输出插件的作用是对于解码后得到的数据进行后处理.如滤 波、图像旋转等。而作为播放器中最核心的模块,图中的核心架构和插件管理模 块负责对上述各种插件进行组合,控制不同功能线程问的切换以 及各自之间数据 的传输,从而将数据输入、转换、音/视频解码、信号输出等功能结合为统一完 整的多媒体播放框架。播放器中的用户接口和核心架构分开.之』】通过消息基于网络的流媒休捅放器的设计‘实现 通信,也便于用户根据自己的需求来开发自己想要的界面。 当前常见的流媒体播放器大多都能播放多种音视频格式、可以在多平台上 运行、对常见的网络传输协议都有着较好的支持。这些播放器之问的区别主要体 现在其各自的内核架构以及提供给用户不发的插件接口这两方面。基于上述分 析,下面对当前常见的流媒体播放器实现方案进行简要介绍: . 以下简称是微软公司推出的基于 的媒体播放器,不开放源码。采用架构】,其基本工作原理 是通过统一控制,将单元 组件即串联在一起形成流水线,每个用来执行多媒体数据流的某一 个操作,从而完成多媒体数据的整个处理过程。支持通过基于技术 的插件来扩展功能,用户可用微软提供的进行开发。在流媒体传 输技术上, 支持基于、、协议的流媒体传输。 . 是公司推出的媒体播放器,是最早支持互联网流媒 体的播放器】。基于模型实现了可扩展的插件接口; 。 但不开放源码,对它进行二次开发必须使用专用的 在流媒体传输技术上,支持、、以及协议 的流媒体传输。 .是苹果公司推出的媒体播放器,基于苹果电脑公司所设计 的架构。 可以通过插件扩展,但是它也不开放 源码,必须使用苹果公司专有的来开发。在流媒体传输技术上, 支持基于、协议的流媒体传输。 . 是一款开源的多媒体播放器。具有一个统一的解码插件接 第一章绪论 口,不基于的结构,所有的编译到播放器旱面,插件采用 支持基于, 动态链接库的【】【】。在流媒体传输技术上 、、、、:/、协议的流媒体传输】。 】. 由早期的著名播放器 髓发展而来。基于类 似于托的自身独立架构,功能强大且完全开源。基于插件架构, 所有插件以的形式来提供接口。在流媒体传输技术上,目前,已经 提供了对’和协议的支持。 对以上插放器的分析,可以归纳比较见表: 表常见流媒体播放器方案的特点比较 醚黼徽 否 否 否 是 是 开源与否 基于 开源,基丁:自身特 开源,基于自身特定 体系架构 基于 基于结构 架构 ” 模型 定架构 专有 专有 专有 完全公开 完全公开 插:接口 视 帆、、 、、?、 等 等 频 .尊. .等 锌 、、、 、等 、、、 ,,, 等 昝 颁 等 ,, 菩 、 、 、、、 协议支持 、 、 运行环境 /、 , 叩 等绝大多数平台 等 系列 音持基于网络的流媒体播放器的设计‘实现 虽然短期内降低了不发难度,但也势必为以后进一步的深入研究设置了难以逾越 的阻碍;而完全开源的和则不存在这样的问题。在插件设计方 面,上述播放器均提供了插件接口方案供开发时选择,可以分为基于组件 的方案和基于的方案;在基于的方案中,主程序不需要知道插件怎 样实现预定的功能,而只需要通过接口访问插件,并提供主程序相关对象的接口 即可,如 、等;而在基于方案中,主程序 可以通过显式加载和隐式加载的方法,从而调用所需的功能,如 和 等。 .关键技术及其研究现状 根据流媒体播放器的实现方案,基于网络的流媒体播放器的关键 技术有解码插件的设计以及网络进程和播放进程之间的多媒体数据的 传输。下面将分别介绍这两种关键技术及其研究现状。 .. 播放插件设计 如图.所示,插件播放器通过设计各种插件来扩展其功能。插件程序必须 能够实现若干符合标准的接口,从而在与插件通信时提供给主程序调用。目前主 流的插件设计主要基于组件或动态链接库来实现。 对于采用架构的播放器,其插件设计往往基于组件开发, 这是因为系统将多媒体数据处理过程通过多种功能连接起来协 同工作来实现,而每个都是类型的对象。微软通过为功 能插件开发提供了标准、统一的接口,如文献】阐释了如何利用来 构建媒体播放器的通用办法,文献给出了.解码在网络环境下的实现 过程,文献构造了一个基于网络的.流式播放器,文献】中介绍了 一种流式网络播放器的实现过程,文献中提出了一种.视 频解码器在中的实现方案以及文献】中给出了一种设计.解 码的的方案,此外还有基于技术对实时视频流进行捕捉及压缩 的实现方案等,如文献】中所述。 在非架构的播放器中,插件设计常采用基于的方式,通过 第一章绪论 提供功能接口函数,从而将插件功能提供给主程序调用。如著名音频播放 软件就是通过查找目录下的文件的接口来实现插件功能的 ,又如文献中在系统中设计了一个的解码插件,文献 提出的在平台下实现浏览器通用视频插件的方法,文献】中通过 多线程通信和对数据传递的流解析设计的一个.流媒体播放插件,以及文献 】中基于设计的一个视频播放插件等。 因此,开发多媒体音视频的解码插件,应该根据不同的播放系统架构,选用 合适的插件实现方式。本文的设计是基于的插件架构,因此对 的播放支持也是通过设计的解码来实现的,这部分的工作也将是本文 工作重点所在。 ..媒体数据的进程间通信. 。; 流媒体系统中的一些内存空间往往需要被多个任务去访。对于流媒 体系统中的多个任务,如视频捕获进程和运动检测进程,当它们需要一块内存空 间来进行互相间的通信以及媒体数据的传输时,进程间通信技术 ,就将起到至关重要的作用】。进程间通信技术的本 质就是通过允许多个进程访问同一共享内存块,达到进程间交换数据的目的 】。因此,当流媒体系统的设计采用了多个进程时,就需要使用进程间通 信技术来进行协调。常见的进程间通信技术有文件映射、动态数据交 换、管道等。 文件映射的特点是允许将文件内容映射成为进程地址区的一块内存,它适用 于单个计算机上的多个进程对大型数据流的管理】,如在视觉传感系统的设计 中用以在进程间传递大量的图像数据,在设计网络管理系统中用以在监控模 块和管理代理模块之间的数据传输,以及在测试管理系统中用以实现数据采 集进程和测试管理进程间的通信【】,还可以在设计多输入法实 例时用来解决不 同应用程序间的数据共享问题等。动态数据交换的特点是适用于网络中的不 网络中实现 同计算机之间的数据交换和同步,如在 应用程序和数据库间的数据交换,还可被用于实现计算机监控模块与可编程 序控制器之间的通信,在机器人远程控制系统中用以实现主程序进程和驱动 皋十叫络的流媒体播放器的设计与实现 模拟进程之间的通信,以及在数字仿真平台系统的实现过程中用以实现各个 模块间的通信等。 管道是通过建立一条具有两个端点的通信通道,从而拥有一端句柄的 进程可以和拥有另一端句柄的进程进行通信的技术。管道又可分为命名管道 和匿名管道。命名管道在建立管道时为管道指定了一个名字,从而可以在网络上 由任何一个进程通过该名字打开管道的另一端;而匿名管道是以句柄而非名字来 标识管道的,这决定了匿名管道只能用于单机上的进程通信】。因 此,命名管 道常用于服务器进程和一个或多个客户进程之间通信,如在控制系统中用以和实 时数据库程序之间进行通信】,以及在地面系统的设计中用于获取遥感数据 】,也可在股票查询系统的设计中用于扩展存储进程和服务器进程间的数 据传输,此外在培训仿真系统中还可以作为服务器进程和客户进程间的通讯 桥梁】等;而匿名管道则很适用于单机上的父进程和子进程、或父线程和子线 程之间的数据单向传输,如在构建实时内存数据库时可以用来实现计算进程和数 据库进程之间的通信,以及在程序中通过匿名管道得到控制台程序的输 出结果】,还可以在语音聊天系统的设计中将父线程接收到的数据发给子线程 解压缩并输出,此外还可以充当虚拟机上的和进程之间 的通信媒介等。可以看到,管道技术可以很好地满足系统对实时性的要求。 目前,管道技术已经充分广泛应用于流媒体系统设计中,服务于系统的多个 任务模块之间的通信和数据共享】】。其中,匿名管道适用于具有父子关系 的进程间的通讯,且操作简单,开发难度较低;此外使用匿名管道还不会生成额 外的文件,从而使通信过程中的内存能够得到有效的管理】。因此,匿名管道 技术很适用于流媒体系统中多进程任务的设计。 .主要研究工作 基于网络的流媒体播放器的总体设计方案是采用播放器的 插件架构,设计视频文件的播放插件;并结合的资源丰富、搜索功 能强大、多点并行传输的优势,实现了视频文件在网络上的资源发现 和数据下载,从而扩展了播放器的流媒体实时播放的功能。具体研究工作 如下:第~章绪论分析的框架和功能模块接口,首先设计视频格式解析插件, 用以解析并读入视频数据流;再将解码代码封装成为解码插件 ,从而对数据流进行解码处理;最终实现了对视频文件的 播放支持;并通过修改源码中的相关编译文件及移植,实现了播放器在基于 的嵌入式平台上的正常工作。 ?在利用原有的技术基础上,对基于和网络的文件搜 索和文件下载部分的协议和代码进行了详细研究;设计匿名管道来作为播放 器进程和进程之间的通讯和数据交换的桥梁,将端搜索并下载 到的文件数据通过管道提供给播放器进程,实现了流媒体文件无需下 载完就可以实时播放;在播放器端设计流解析插件,用以对传递过来的 数掘进行读入。此设计的优点在于设计上不改动协议,可以兼容现 有的环境,从而以较小的代价实现的流媒体播放功能。 在后续的章节,本论文的内容安排如下:第二章介绍视频的基本概念和基 本知识,然后介绍了常用的视频压缩技术特别是的技术细节,以及本文移 植实现时基于的软硬件开发平台;第三章详细阐述了播放插件的设计过程, 包括了对的插件式架构分析、解码插件、格式解析插件的实现等; 第四章详细解释了视频的流媒体播放功能的实现,包括对协议 和源码的分析、如何设计播放器进程和进程之间的匿名管道并用以通信 和数据传输、以及操作管道来控制视频数据等;第五章对播放器的性能进 行测试,给出了一些数据;第六章是总结和展望,总结了本论文的主要工作,并 对以后的研究内容进行展望。 第二章播放器设计的相关知识 第二章播放器设计的相关知识 本章介绍了媒体播放器设计的相关的基本概念和基础知识,包括多媒体视 频、多媒体数据压缩及常见标准以及本文开发所需的软硬件平台等,为后续章节 提供必要的理论基础。 .视频 视频是相对于静止图像而言的概念。在图像和视频中,基本属性有颜色空间、 分辨率、像素深度等。 .颜色空间。颜色空间又可分为三类:利用三原色对彩色进行分类, 提出了颜色空间;在的基础上用物理三基色推导出来的理论三基色, 提出了颜色空间/颜色空间:在计算机显示图像时出于对传输时带宽的 考虑,提出了?『颜色空间/电视系统颜色空。 .分辨率。分辨率分为显示分辨率和图像分辨率:图像分辨率是确 定组成 一幅图像的像素数目,而显示分辨率是确定显示图像的区域大小。 .像素深度。像素深度指的是指存储每个像素所用的位数,它决定着彩色 图像的每个像素可能有的颜色数,或是灰度图像的每个像素可能有的狄度级数。 对于视频,有模拟视频信号和数字视频信号之分,模拟视频信号就是常见的 电视信号和录像机信号,采用模拟方式对图像进行还原处理,这种图像被称为视 。模拟信号需要专门的视频编辑设备进行处理,计 频模拟图像 算机无法对其进行编辑,要想让计算机对视频信号进行处理,必须把视频模拟信 号转换成数字化的信号】。数字视频可以通过采样光栅扫描或直接用数字视频 摄像机获得。与模拟摄像机一样,数字摄像机将成像景物采样成离散的帧。目前 国际化的数字视频国际标准有. .等。 .视频压缩标准 由于原始视频信号的数字表示需要较高的容量,为便于存储和传 输,必须选 基于网络的流媒体播放器的设计与实现 择适当的编码算法,实现对序列的高效压缩。在多媒体应用中,这主要取决于所 提供的带宽以及所需的最低质量要求。 视频压缩是很有必要的。假定视频帧量化为离散的像素,每行个像素, 每幅图像行,如果颜色用两个色度帧来表示,每个色度帧的分辨率是亮度帧 的一半,那么当每个亮度或者色度分量用的精度时,每个视频帧都需要大 约来表示其内容。若视频帧不经过压缩以帧/秒传送,那么原始视频序 列的数据率约为.,即每分钟的视频数据需的带宽。在目前的存储 器、网络的传输量、数据的携带、计算机的运算速度条件下,这些都是极难实现 的。所以,多媒体特别是数字视频必须进行压缩,才能得以广泛的传播和应用。 与语音信号不同,一个图像或图像序列的数字表示需要很多比特。不过,视 频信号通常包含着一定量的冗余,可在数字压缩过程中去除。这些冗余可能是统 计的,与视频序列电平的近似程度相关;也可能是空间上的冗余,由同一帧亮度 和色度值的近似程度引起;甚至是时间上的,由连续视频帧问的近似性带来的。 视频压缩就是去除这些冗余的过程。经过多年的研究,现在视频编解码过程已经 较为成熟,其基本过程结构图如图.: 图.:视频编解码的过程结构图 多媒体数据压缩的常见形式有、.、等等。下面简要以 和为例介绍一下常见的视频压缩标准。 .. 是负责开发电视图像数据和声音数据 的编码、解码和它们的同步等标准的一个由国际标准化组织和国际电 工委员会联合成立的专家组。到目前为止,该组织开发的标准有第二章播放器设计的相关知识 .、.、.、.、.等。视频的标准的特 点主要有随机存取、快速正向、逆向搜索、视听同步、容错性等:下面以. 和.的压缩为例说明这个标准系列。 .中,帧内压缩算法与压缩算法大致相同的,也是基于的 变换编码技术以达到减少空间冗余信息的作用。在帧间压缩中,.则采取 、预测图 预测法和插补法。系列标准中将图像分为帧内 和双向预测訇 。在帧问预测中,最 关键的技术是运动补偿和运动估算。运动补偿是以子块为预测单元,把 当前子块认为是先前某一时刻图像子块的位移,位移的内容包括运动方向和运动 幅度;而这个×的运动矢量差值块作为随后编码、传送之用,从而减少了 空间冗余。这是在运动补偿中插值补码是最常见的方法,也是前面提到的将图像 分为、、三种的用意所在。而运动估算是在基于块的运动表示算法中,按 照尽量减少匹配误差的方法来找到与当前需要预测的块最接近的块,从而获得最 小的运动矢量。这个寻找最合适的预测块的方法,就是运动估算。随后的步骤是 变换和可调的量化,最后是进行熵编码。经过这些步骤后得到的就是 .压缩后的数据。整个编码框架如图所示: 视频流 图:视频编码器框架 .标准在年月正式发布,与之前的.相比,其最重要 的特征在于】: .编码是基于对象的。它把图象和视频分割成不同的对象,对每一个对象 的编码形成一个对象码流层,该码流中包含着对象的形状、位置、纹理及其他方 面的属性。对一幅图象编码所形成的码流由一系列对象层构成,用户可直接对‘对 象层’’进行存取操作,这样就使得操作、控制对象成为可能,而传统的编码都是 慕十叫络的流媒仆播放器的设计与实现 基于帧的,无法对对象进行操作。 .根据现场带宽和误码率的客观条件,.可在时域和空域有着灵活 的可扩展性。时域扩展是在带宽允许时在基本层上的增强层中增加帧率,在带宽 窄时在基本层中减少帧率;空域扩展是指对基本层中的图像进行插值,增加或减 少空间分辨率,以达到充分利用带宽,使图像质量更好。 .支持自然和合成的视觉对象编码:对自然视觉对象的编码. 采用零树小波算法 提供高压缩比,同时还提供多达 级的空间分辨率和质量的可伸缩性;而合成的视觉对象如、动画、人 的面部表情动画等,这些合成图像单独编码,不仅可有效压缩,而且还便于操作。 对于运动视频对象的编码,采用如图.所示的编码框图,以支持图像 的编码。 视频输 视频流 图.:视频编码框架图 .. . ..视频标准简介 .视频标准采用混合编码框架,包括了变化、量化、熵编码、帧内预 测、帧间预测、环路滤波等技术模块。帧内预测使用空间预测模式来 消除图形内的冗余,帧间预测使用基于块的运动矢量来消除图像间的冗余;图中 的是预测模式的选择开关。再通过对预测残差进行变化和量化消除图像内的 第二章播放器设计的相关知识 视觉冗余。预测残差将进行的整数变换和量化,然后对量化系数进行 .扫描隔行编码块会进行另一种扫描,得到一位排列的量化系数。. 视频标准的变化和量化用位精度即可完成。最后,运动矢量、预测模式、量 化参数和变化系数用熵编码进行压缩。.视频标准使用环路滤波器对重建 图像进行滤波,滤波强度可以自适应调整,一方面可以消除方块效应,改善重建 图像的主观质量,另一方面也可以提高编码的效率。的编码框架图如图. 所示: 图.视频编码器框架 的解码则是其编码的逆过程。图.为视频的解码框图:码流经 过熵解码后得到相应的控制信息和宏块数据、运动矢量数据等信息。宏块数据经 过逆扫描得到量化系数,量化系数经过反量化和反变换得到残差系数;另一方面, 根据解码的运动矢量信息进行帧内或帧间预测得到预测值。利用残差系数加上预 测的结果得到重构数据,再经过环路滤波去块效应,得到最终的图像数据。 图.:视频的解码框图 基于鲥培的诫难体播放嚣的设计与实现 的主要刨新在于提出了一批具体的优化技术,在较低的复杂度下 实现了 与国际标准相当的技术性能,但又避免了使用国际标准背后的大量复杂专利。 .的特征性的核心技术如表所示.包括整数变换、量化、帧内预 测、,精度像素插值、特殊的帧间预测运动补偿、二维熵编码、去块效应的环 内滤波等。 表 与、/:.的技术对比和性能差异 帧内基于的块,种亮度预测模式,种色 只在鞭域内进行系数 基于的块,种亮度预 崖顶测模式 的差丹预测 测模式,种色度预测模式 有帧 最多帧 多参最多帧 × 塥糖 ,×, . 查块××, ‘ 码 ×巩 ×。 独立?空域或时域磺铡模 帧宏块 空域相鲒合.时城内后向参考帧中用 式.若后向参考帧中用于导 直接于导出运动矢量的块为帻内编码吨使用空 出运动矢量的块为帧内螭码 域相缸映的遣动矢量进行预科 时只是税其运动矢量为菔 然用于预测 编码前后两十运动先量 帧宏块 对称预测横式。只犏码个前向磊动矢 犏玛前后两个运动 矢量 向预测摸式 运动矢量由前向导出 仅在半像素位置进行双 /像素位置采用拍穗渡, 触蠢运像素位置采用拍滤波。 像素位置 采用拍?波、线性插值 线性插值 像素位置线性插值 ×浮点变换.除 ×整散奎摊.辅解码端都 变换 整致变换编码蜡进行变换归一化.量 化与变接扫一化相结台,通过橐法、穆位实 法量化 需要归一化 量化与变换归 一化相结台.通过乘法、移位 现 实现 墒编自适应性 编码块系数过程中进行 单一表.适应性差 :与周 围块相关性置 宴现较复杂 多玛衰切换 :计算较复杂第二章播放器设计的相关知识 外路滤波 无 基于 基于×块边缘进行,简单的滤波强度分 块边缘进行.滤波 类,滤波较少的像素,计算复杂度低 强度分类繁多,计算复杂 .视频编码的比特流结构 标准支持多种视频业务,考虑到不同业务间的互操作性,标准定义 了档次和级另。档次是定义的语法、语义及算法的子集;级 别是在某一档次下对语法元素及其参数值的限定集合。为了满足高清晰度/标准 清晰度数字电视广播、数字存储媒体等业务的需要,视频标准定义了基准 档次和四个级另.、.、.和.,支持的最大图像分辨率从到 ,最大比特率从/到/。 .视频序列: 视频序列是比特流的最高层语法结构。视频序列由序列头开始,后面跟着一 个或多个编码图像,每帧图像之前应有图像头。编码图像在比特流中按比特流顺 序排列。序列结束码表明了一个视频序列的结束。 .图像: 图像由三个样本矩阵构成,包括一个亮度样本矩阵和两个色度样本矩阵 和。样本矩阵元素的值为整数。一幅图像是一帧,其编码数据由图像起 始码开始,到序列起始码、序列结束码或下一个图像起始码结束。 图像格式有三种,如图所示,圆圈标识亮度样本,号代表色度样本。 对于::格式,和矩阵水平和垂直方向的尺寸都只有矩阵的一半;对 于::格式,和矩阵在水平方向的尺寸只有矩阵的一半,在垂直方向 的尺寸和的相同;对于::格式,和矩阵在水平和垂直方向的尺寸都 和矩阵一样。在::格式下,一个宏块包括个亮度块和个 色度块个,个。 囝彩?够囝 囝谚钐 够国够傍国 劬够够镑国够 表示亮度样本 表示色度样本 图?:视频中的三种图像格式 雉于网络的流媒体播放器的设计与实现 .视频标准定义了帧、帧和帧三种不同类型的图像。帧的宏块 只进行帧内预测,帧和帧的宏块则要进行帧内或帧间预测。通常情况下,一 个图像组中包含一个帧、若干个帧和帧。帧和帧至多有两帧参考图 形供帧间预测使用。帧可参考前向的两帧;帧可参考一前一后的两帧。 .条带: 图像可以再分为若干个条带,结构如图所示。条带是按照光栅扫描顺序 连续的若干宏块行。条带内的宏块行不应重叠,条带间也不应重叠。条带内宏块 的解码处理不应使用本土性其他条带的数据。条带结构如图.所示: 一 ? , 图?:的条带结构】 .宏块: 标准中图像再被划分为宏块,宏块是最小的单位。宏块的划分如图. 所示。 个×亮度块 个×亮度块 个×亮度块 个×亮废块 和捆成躺色度块 栩废的色度块 和相应的色度块 和相疵孵色凌块 塞较捌分 口日田田 矩形内的数字表示宏块划分后的运动矢量和参考索引在码流中 的顺序 图.:的宏块划分】 在本文设计中使用::格式的视频中,一个宏块包括个亮度块 和个色度块个,个。图?中数字为宏块中的块的顺 序号。第二章播放器设计的相关知识 .软硬件开发平台简介 本文中的视频播放器的设计利用 开发,且将被移植 到基于和 的平台上实现。本节将对其中牵涉到的软硬件平 台进行简要的介绍。 ..硬件开发平台 移植中使用的硬件平台以 的处理器为核心。该开发板 平台主要由以下几部分组成: .采用公司生产的处理器,它兼容指令集, 最高工作频率可以达到 ,支持的 技术和 技术,有利于提高多媒体产品的处理能力并降低功耗。 .采用公司的 ,大小为 。 由于主要用于存放引导程序和操作系统,硬件平台上电后要求能 从 运行引导程序,所以应该选用具有特性的 ,其大小则取决于软件 操作系统, 的镜像根据添加的功能和/,版本文件大小 会变化,但一般不会超过 。 .的选择主要考虑封装和容量两个因素,适用于嵌入式的 封装主要有和 两种,前者对制板工艺要求较高,会导致开 发板的成本显著上升,因此本开发平台采用的是 封装的, 总容量为 ,其中操作系统占用 的空间,其它的系统运行和多 媒体播放器等软件占用另外 的空间。 .硬件接口部分设计了基本的音视频输入输出接口、作为大容量 存储器的 硬盘接口以及一些通用的扩展接口,如、/等。 图为此开发板平台的具体框图:蕈十网络的流媒体播艘器的设计‘实现 噩 型 固 耋飘一噶 围:硬件平台结构框图 系列处理器是公司开发的面向便携式手持设备应用的高性能、 低功耗处理器.根据内部是否集成、厦其容量大小.有四种 具体型号:、、和。图为硬件平 台的结构框图。第二章播放器设计的相关知识 图.:硬件平台结构框图【】 基于的处理器引入了架构奔腾系列上的多媒体 扩展功能,可以播放高质量的视频;同时加入了 动态电源管理技 术,在保证性能的情况下,最大限度地降低移动设备功耗。内置控制 器,可以显示最高为像素的图像,支持//灰度像素和/彩色 像素。由此可见,系列处理器的性能非常优秀,极低的功耗可以提高嵌 入式产品的电池续航能力,集成众多外设的设计可以降低产品的成本、功 耗、体积和设计难度,并且具有业界领先的多媒体处理能力,非常 适合于嵌入式 多媒体应用。 ..软件开发平台 . . 软件平台移植采用了 嵌入式操作系统。微软公司的嵌入式 操作系统是专门为信息设备、移动应用、消费类电子、嵌入式应用 基于网络的流媒体播放器的设计与实现 等非领域而全新设计的操作系统。 是微软在嵌入式、移动计算 领域的基础,它是一个开放的、可升级的位嵌入式操作系统,是应用于掌上 。 电脑类的电子设备操作系统,可以说是精简的 的图形 用户界面相当出色,很适合做嵌入式视频开发。 与 /、 不同的是, 是所有源代码全部 /, 由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于 但 是基于 重新开发、新型的信息设备的平台。 具有模块化、结构化和基于应用程序接口和与处理器无关等特点。 不仅继承了传统的图形界面,并且在 平台上 、 等、使用 可以使用 /上的编程工具如 同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移 植就可以在 平台上继续使用。.为微软的.最新家族成员,除%兼容于 外,并强化许多功能:在开发环境上,微软提供兼容于. 的开 发元件:. ,让正在学习.或已拥有.程序开发技 .系统的装置上开发应用 术的开发人员能迅速而顺利的在搭载 程序。图.显示的是从逻辑角度看 的系统构成,可以看到系统 包括如下几个软件实体:作用相当于的.,控制着系 统的内存管理、数据的输入输出操作和中断处理、、设备管理模块、数据存 储模块、图形用户模块、模块,以及两个比较特殊的部分:驱动程序模块 和系统服务模块,它们和其他的模块从划分上有一些重叠。 图.: 模块结构虱第二章播放器没计的相关知识 . 开发环境。 本文中的代码编写和调试均利用 最大的优势在于其多平台的特性,既可以方便做基于平台的开发,也可 以取代 而成为开发 应用程序的集成不发环境 和工具。 相对于 和 ., 不仅将原来 的优点继承并发扬光大,而且增加了很多新的特性: .对. 的全面升级; .对存、.、、等多种编程语言的改善; .引入了静态和动态代码分析器; .代码的可视化表达得到优化; .继承了单元测试工具和代码覆盖工具; . 是为基于 ?.操作系统构建定制 嵌入平台而提供的集成开发环境。 附带有设计、创建、 构建、测试和调试一个基于 的平台所需的所有开发工具。 .中的主要特性包括】:新的 平台向导:创建一个新的平台基础配置:为各种流行的设备类别预置的定制操作系统,为自定义操作系统 的创建提供了一个起点。仿真器:通过硬件仿真加速和简化了系统的开发,使用户可以 在开发工作站上对平台和应用程序进行测试。向导:提高了主板支持软件包创建过程的效率。测试工具包:提供了一个驱动程序测试工具集。内核调试器:可以对自定义的操作系统映像进行调试,并且向用户提供有关 映像性能的信息。应用程序调试器:可以在自定义的操作系统映像上对应用程序进行调试。:可以向其他 用户导出自定义的 导出向导基于网络的流媒体播放器的设计与实现 目录特性。:使用户可以导出一个自定义的软件 导出向导开发工具包。远程工具:可以执行同基于 的目标设备有关的各种调试任务和 信息收集任务。 在 中,借助定制 的 来进行开发应用程序了。利用 成功后,就可以提供给 进行应用程序开发,程序可以运行在特定的多平台上,只需要安装针对不 同平台而开发得到的即可,而不需要撰写额外的代码。其中针对特定平台 的代码转换工作将由编译器自己完成。 .本章小结 本章介绍了播放器设计的相关概念和视频压缩标准的基本知识,.为流 媒体播放器的设计提供了理论支持。此外介绍了本文中所采用的软硬件开发平 台,作为播放器在嵌入式平台上的移植的知识准备。第三章播放 插件的实现 第三章播放插件的实现 本章将详细说明实现视频播放插件的设计过程。首先介绍的整 体架构和播放流程,进而分析播放器的插件式框架,然后说明增加视频播 放支持的方法,包括设计格式解析插件、解码插件等。下面将依次展开说明。 . 的整体架构和工作原理 图.显示了中的重要模块以及系统的工作流程,可以看到它和图 ?的播放器通用架构非常类似。播放器核心模块为管理系统中所有的功 能模块,并对其中的插件模块、和模块提供各自通用的接 口;各个插件模块则通过对接口函数进行封装,提供给播放器核心模块自由调用。 图:的模块工作流程图 当用户运行播放器后,播放器首先初始化,加载所有插件。初始化结束后, 用户就可以通过界面点击相应按钮来对多媒体文件进行播放了。如图.所 示,模块将控制消息发给播放器核心模块,随后开始控制数据 输入、调用格式解析插件、解码插件、以及最终输出,完成整 个播放过程。上述几个模块的功能如下: ?用户界面:图形界面,通过按钮和窗口等来接受用户输入的消基于网络的流媒体播放器的设计‘实现 息,将播放、暂停、拖动等,传递到播放器组件。 ?播放器:播放流程的管理单元。读入本地文件或网络数据流,进行解 析;将数据发送到解码插件做解码;将解码后的数据递交到音视频输出设备。 ?格式解析插件模块:用以对文件格式进行分析,得到数据的编码方 式。如果是复合流,就根据数据包中的标识来分流视频和音频,放入不同的 结构中,等待提交给各自对应的解码插件。如果数据包中有时间戳单元,则 根据时间戳对音视频做同步操作。模块可以设计成单独的插件 文件,也可以和解码插件模块设计在一个中;通过加载模块中 的接口函数,实现对媒体流的格式解析及数据流的读入。解码插件模块:包括音频解码插件和视频解码插件。每一种解码插件 作为一个子工程;通过加载不同的.文 件来调用不同的解码处理的接口函数。 . 的插件式框架 插件系统由宿主程序和若干功能插件组成。一个良好的插件系统 应该要求宿 主程序能在几乎不知道插件功能的情况下识别插件,并且能够调用插件提供的相 应服务;而这就要求着插件和应用系统间应有一层良好交互的接口。一个普通的 插件应该提供两种接口:一是识别该插件的接口,这个接口主要用于系统程序在 搜索插件时调用,通过这个接口返回该插件的相应信息,用以判断该插件是否为 系统程序可以调用的插件;二是插件提供服务的接口,这类接口一般有多个,主 要向核心模块提供的自身功能函数。 主要由核心框架模块工程和众多插件组成,主要的插件可 分为:实现了的界面,是系统的解码插件模块, 是媒体文件格式解析插件模块等。本节将以上述的插件接口的几个特点为出发 点,系统地分析的插件式框架设计。 ..插件存储位置的获取 对插件的识别,首先是要找到插件文件的存储位置。如.节中所述, 是基于插件架构实现的。当第一次启动时,会搜索一个特定目录第三章播放捅件的实现 下的所有动态链接库文件,即目录下的所有后缀名为或..的文 件。 本文中播放插件也将被封装成文件,文件名为.,且和其他插件 均放在相同的目录下。首先找到.,调用其导出函数 以产生播放器界面,开始准备接收用户传递来的消息。在函数中 还将调用 函数,用以初始化整个播放器系统并获取插件存储位置, 的函数调用关系图如图.所示: 图?:的函数调用关系图 如图所示, 内存等 的初始化过程分为很多步,包括系统使用字符串初始化、 资源初始化、 模块初始化、 视频信号渲染模块初始化、 根节点模块初 始化、 解码模块初始化、 格式解析模块初始化以 及等。负责外部插件模块的初始化,即搜索、识别、 所有插件。搜索插件的过程是通过和函数,查找与 .存放于相同目录下的所有以和为后缀名的文件,再通过 函数进行动态加载。以搜索.为例:会将当前插件模 块中的相关信息包括存储位置立即写入注册表中,从而当下一次 启动时, 音频信号转换.基十网络的流煤体桶放的设计与实现 宿主程序将通过查找注册表来取得插件的相关信息等,而无需再从本地目录 三爹爹羹薰?~ 图:注册表中保存插件信息示倒 图中,加载后注册表中新建了项“”的格式解析插件。可 以看到,“”项的属性中记录了包括插件所在路径的相关信息;其余属性也 将在后续章节中介绍。 .插件接口的定义 在插件系统中,插件在系统完成之后由用户端动态地插入或去除.而其中一 部分插件还可能是经由第三方开发的,它们的功能和需要的资源都不能预先知 晓,因此接口就必须能够使得插件在插入到系统中时可以被识别,从而插件系统 中的管理模块对接口就应当有着自己的定义和实现方式。中识别插件的 接口则是由其节点结构来实现的。 中的每个功能模块,包括插件中定义的功能模块在内,均由一个节 点来标识。中关于节点的定义如下: 、 怒黑蒜 甜第三章播放捅件的实现 其中,为该节点的标识,通常用不同的格式表示。 全称 ,一般在视频处理中用作标识符 。为 该节点的父节点的标识,用以表示节点问的继承关系;表示其优先级, 和分别是节点的创建和注销的函数指针。表明了父节点和 子节点间的继承关系,但并没有具体实现;真正的实现部分则与结构体有 关,其定义如下:; ; ; ,; ;,, ~ 。. 磊,. 其中,和中的是对应的。、和这三个函数 指针,分别实现的是枚举当前节点属性、获取当前节点的某个属性、设定某个属 性的作用。这个结构体是根节点的定义,其他节点如果要继承节点, 则要定义自己的结构体,结构体内部的第一个成员为结构体,然后下面再 定义自己的特有属性;如节点的结构体就是这样定义的: ?? 吱?撕吩。%一。。?一一。?。 礤 ; ; ? ; 》 ; 》, 二、;‰..。。。,。。。。。。%蟊。~。。。?二。。。。。.?“。乞.,。。,。。?。:以。:。。二.;。。就茕。.。。,.。。。。。。 其中 是一个宏,它的定义就是的结构体定义。可以看到, 结构体在结构体的基本定义上又加了同步、读和处理三个功能,从而实现 了功能上的扩展。和节点类似,中的每个子节点都可以有自己的 功能函数,但必须继承和实现其父节点的接口函数;因此在添加新的节点的时候, 首先应根据想要实现的功能,确定从哪个已经定义的节点开始继承,将该节点作 为父节点。图.为中主要节点以及它们间的继承关系图: ””?”’甲.基于网络的流媒体播放器的设计实现 \、??? .』 \?????~/ 固黑曼誊 二烛型 二圆 芬 二一/ 厂???、 / 匕 . . \ / :母‘圆 、????一??/ 固回 』题习回?画习圃 图.:的节点继承关系图 图.中每个圆框代表一个节点,箭头后的节点是箭头前的节点的 子节点。 如图所示,中主要节点包括: .节点: 节点模块负责管理播放器的窗口。窗口是软件和用户间交互的平 台。 程序开始执行后,系统会为程序建立一个“消息队列’’。这个消息队列 用来存放该程序建立的各种窗口消息。程序中对应的代码叫做“消息循环,用 来从队列中取出消息,并且将它们发送给相应的窗口消息处理程序。 播放器程序中有一个主窗口、一个设置对话框、一个播放列表对话框;此外 主窗口上还有播放按钮等控制窗口以及显示播放进度的滑块窗口。主窗口上还包 含菜单,菜单中包括弹出设置对话框和播放列表对话框的菜单项,其中设置对话 框用于提供设置语言、设置数据缓冲区大小的功能,而播放列表提供用户管理多 媒体文件的功能。 第三章播放捅件的实现 .节点: 节点模块用来解析流的类型。不同的文件或流的格式应对应不同的数 据流处理接口。的子节点有节点、节点和节点 也缶 专手 节点在播放器中被设计成对所有数据流处理模块的枚举,枚举 成功后利用枚举请求加载相应的流处理模块。节点在模块初始 化的时候就得以加载,里面包含了当我们需要打开本地多媒体文件进行播放时需 要的常用处理接,如封装了读、读块、写、索 、目录枚举等功能函数。节点在调用.时加载,包 含了在读取基于协议的网络媒体流时需要调用的函数。本文第四章中也会 将以为父节点来设计对网络数据流的解析插件节点。 .节点: 播放器
/
本文档为【基于P2P网络的AVS流媒体播放器的设计与实现(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索