一种用于对等计算机顶盒的播放器的控制方法

文档序号:7929740阅读:129来源:国知局
专利名称:一种用于对等计算机顶盒的播放器的控制方法
技术领域
本发明是一种用于P2P(Peer-to-Peer)机顶盒的播放器,将P2P机顶盒中没有被完整下载 下来的媒体文件播放出来,解决了 P2P机顶盒边下载边播放边共享的问题,从而实现了一 个好资源多人在线看的现象,完善了 P2P机顶盒的功能,属于对等网络应用领域。
背景技术
P2P网络模型打破了传统的C/S模型通信方式,在以前的C/S模型下,客户和服务器之 间的通信是基于服务器设定的规则。P2P模型允许用户设定他们自己的规则和建立自己的网 络环境,为了与Internet合作,P2P模型提供了近似的即插即用的特性,即你只要连上Internet, 就能使用P2P的特性。P2P模型的另一个优点就是它不仅能够在Internet下有效地工作,而 且对于LAN和Intranet也非常有用。
目前国内外IPTV (Interactive Personality TV )系统要解决十万、百万用户同时收看视频 节目的问题,需要部署大量的服务器,依赖极宽的网络带宽或者要对现有的网络进行大规模 改造,这些都成为制约IPTV发展的瓶颈。而下一代互联网应用的主流技术一对等连接P2P 模式,则是解决这个问题的最好方法。P2P是一种将客户端赋予服务功能的技术。它可以 使网络上的用户端(如电脑或机顶盒)既能接收也能对外发送流媒体内容。在广播、点播 (VOD)和推播(PushVOD)视频节目的时候,可以通过用户端之间主动或自动的相互传 递来发送视频内容,从而避免所有内容均从一个或少量服务器中发出而造成网络堵塞。但直 到目前为止,所有其它的P2P解决方案和产品均是基于电脑的方案,而基于相对简单、廉 价的IPTV机顶盒的P2P解决方案,由于其在有限资源上实施的相对技术难度,而一直未能 解决。
基于ucLinux系统的嵌入式客户端、P2P机顶盒OSD(On Screen Display)管理系统、P2P 下载系统和机顶盒播放器,这样就可以通过宽带和P2P机顶盒来实现P2P数字电视直播、 P2P视频多播、P2P视频点播等应用。它将帮助IPTV业务提供者克服带宽限制,减少部署 IPTV业务的投资,为快速部署和提供IPTV业务提供了条件。P2P机顶盒的出现将大大促 进IPTV产业的发展,为IPTV应用开辟更加广阔的发展空间。
P2P机顶盒的重要组成部分是播放器,因为机顶盒自身的硬件计,能力的限制使得主 流通用的播放器(如Mplayer)并不能对机顶盒达到一般的支持,而机顶盒的CPU(Central Processing Unit)的计算能力太有限,所以流媒体文件的编码和解码一般都是由特制的 DSP (Digital Singnal Processor)来完成,这样一款好的P2P机顶盒产品必然要有一个好的 播放器,这也是本文的价值所在。
本技术的设计方案己经在达芬奇数字平台(DaVinci)TMS320DM6446上做了试验并证 明了可行性,达芬奇数字平台(DaVinci) TMS320DM6446是TI公司新提供的面向视频开发领域,饰fl akm 、Aavanceaiviacnines;々u l>sr UJigitai Sing Processing Unit)内核的髙端嵌入式开发平台,主频高达720MHZ。该平台上拥有丰富的硬件 接口如USB (Universal Serial Bus)、网卡、IDE硬盘接口 (Integrated Drive Electronics)等等,
因此可以选择在该平台上开发一款高性能和拥有广泛业务(包括电子商务,股票交易,视频 聊天等)的IPTV(Interactive Personality TV)机顶盒。
基于P2P原理的机顶盒播放器的用途非常广泛,它可以实现去中心化, 一个好的资源 或热点资源多人在线看,将正在播放的内容共享出去,是P2P机顶盒不可或缺的组成部分之一。

发明内容
技术问题本发明的目的是提供一种用于对等计算机顶盒的播放器的控制方法,可以使 播放器播放机顶盒中只被下载的一小片流媒体文件,实现边下载边播放的功能,机顶盒播放 器在播放某一段流媒体文件时同时将作为文件的共享者将文件共享出去,提供给多人下载, 该方案具有新颖性、灵活性、易扩展性和易操作性,具有很好的市场前景。
技术方案本发明是在P2P机顶盒中播放流媒体文件,播放器的工作原理可以简单地 描述为首先将已下载的媒体文件取一定长度(文件块),根据文件块的信息(通常包括:文 件大小,文件格式,文件类型等等)决定播放器开那些类型线程和初始化那些类型的数字解 码器(DSP),然后取一定长度的己下载的文件数据放入播放器的内存(Buffer)中同时判断下 一片数据段是否也己经被下载,如果已经下载好了 ,播放器根据文件格式调用DSP进行解码, 然后将解码后的数据流写入显示设备提供的应用程序接口 (API)中,终端输出设备将最后的 效果播放出来。如果没有下载好,播放器就停止等待, 一直到下一片数据段已经被下载好才 开始继续播放。在整个播放过程中,计算量最大的任务由专门的DSP完成而其他的计算任务 由机顶盒的CPU完成,这样使DSP和CPU协调工作共同完成播放任务。 —、 体系结构
播放器包括五个单独的POSIX线程(即pthreads):主线程(主线程最终会成为控制线 程)、视频线程、显示线程、音频线程和语音线程。后面这四个线程是在主线程成为控制线 程之前由主线程生成的。只有从输入一个视频文件时,视频线程和显示线程才会被创建。同 理,只有输入一个音频(或语音)文件时,音频线程(或语音线程)才会被创建。用户必须 至少要提供一个文件(音频、视频或语音),但是因为音频和语音所使用的外围设备是相同 的,所以一次只能提供一个音频或语音文件。
除了主线程以外,其它的所有线程都有自己的优先级并遵循以优先级为基础的调度策 略。各个线程的优先级从高到低依次为显示线程、视频线程、语音/音频线程、控制线程。 在图l中给出了系统流程。 ,
我们用会合实用模块(Rendezvous utility module)来同步各个线程i]初始化和清除,这 个模块是在主线程中被初始化的。每个线程完成了初始化以后会通知会合对象,当所有的线 程都完成初始化以后,才会同时被解锁并开始执行各自的主循环。对各个线程清除进行同步 的方法是一样的。通过这种方法,可以保证各个线程所共享的缓冲区在同一时间内只能允许 一个线程使用。 二、 方法流程
4该部分详细说明发明内容各个部分的设计与实现
> 主线程(MainThread)
主线程的作用是
(1) 执行必要的初始化任务;
(2) 解析用户提供的命令行参数;
(3) 根据命令行参数的值来产生其它的线程。
如图2所示,首先我们通过函数ioctl(FBIO—GETSTO)来检测所使用的视频标准(PAL或 NTSC),然后在进行命令行参数的解析的同时建立线程的环境变量。初始化编/译码器和它 的解码器跟踪模块来进行追踪记录。然后根据传递给应用程序的命令行参数来创建线程,打 开暂停(Pause)对象和会合(Rendezvous)对象来同步所创建的线程。当一个或者多个线程被创 建后,将调用控制线程的主函数(ctriThrFxn()),这样主线程将会成为控制线程。
> 控制线程(Control Thread)
控制线程主要负责用户界面,它使用不停地査看遥控器是否有命令输入。 一旦接收到一 个新的命令或者是命令行中输入了命令,命令就能够被识别并且响应的动作会在函数 (keyActkm())中执行。因为需要去检査是否有新的按键被按下,所以在接受一个新命令之前, 要使用函数(usleep())使线程休眠一会儿。
控制线程还要绘制并更新OSD(On ScreenDisplay)的文本信息和图形。OSD窗口必须在 视频窗口的前面。OSD的透明性是指通过OSD可以看到的视频窗口的多少,它是用属性窗 口设置的。在属性窗口中,每一个像素的透明性是通过一个半位元表示的(4比特),它的 值从0取到7。控制线程用函数(setOsdTransparency())来设置OSD窗口的透明性。
控制线程用函数(simpleWidget())来在OSD上绘制按钮和文本。在控制线程中,用函数 (osdlnit())来初始化OSD设备,函数(uiCreate())用来在OSD上创建和绘制静态的文本和按钮。 除此之外,大约每秒钟函数(drawDynamicData())都会去更新动态文本,这个函数从其它线程 中搜集性能数据并且把它们在OSD上显示出来。因为这些数据是从几个线程中获取来的, 所以必须用一个互斥量来保护这些数据,而且对这些变量的安全读取己经封装在了头文件的 内联函数中了。函数(getArmCpuLoad())用来计算ARM的CPU负载(用百分数表示),而编 /解码器会调用函数(Engine^getCpuLoad())来计算DSP的负载率。
> 音频线程(Audio Thread) 音频线程的作用是从文件系统中读入编码的音频数据,然后选择音频解码器进行解妈,
将解码结果写到AIC33设备驱动中并且终端将其播放出来,具体流程如图3所示。 1 .使用函数(open())打开编码的音频数据的源文件。
2. 初始化AIC33声音设备驱动。首先配置声音设备(/dev/dsp), AIC33声音设备驱动目前只 支持2个信道、16位小字节序的样本。同时设置参数。因为语音算法使t用8KHz的取样率, AIC33也设置成这个取样率。 '
3. 用函数(Engine—openO)创建一个编/解码器实例,这个函数的返回值是一个句柄,所有使用 相同编/解码器的线程需要各自的句柄。
4. 接下来创建音频解码算法的实例,使用的函数(AUDDEC—create0)。目前所支持的音频解 码算法是AAC和MPEG1L2。这个函数将返回一个句柄供后面的主循环中解码数据时使用。
5. 用函数(Memory—contigAlloc())分配一块大小为READBUFSIZE (程序中设置的是60K)的缓冲区。这个缓冲区将在后面的数据加载器中用来存放从嵌入式文件系统中读出来的编码数 据。
6.再分配一块连续的内存空间,这是用来存放解码后的数据的。需要注意的是这两块缓冲区 必须都要是连续的。
当音频线程完成了初始化之后,它将使用Rendezvous实用单元与其它线程进行同步。 只有当其它线程也都完成了初始化之后,音频线程的主循环才会开始执行,主循环的流程如 下
a. 初始化编码文件加载器,并且读入一帧的编码数据。
b. 调用函数(AUDDECj3rocess())对读入的编码数据进行解码。这是编/解码器的一个过程调 用,它可以使用音频算法去解码缓冲区。
c. 使用UNIX标准的函数(write())将解码后的数据写到AIC33设备驱动上。
d. 继续读入一帧编码的数据,然后回到第b步。这个循环将会一直执行知道控制线程通知应 用程序退出为止。
> 视频线程(Video Thread) 视频线程的作用是从系统中读入编码的视频数据,然后选择视频解码器进行解码。 为了获得更高可信赖的性能,并且避免当有很多帧需要被解码时出现帧丢失的情况,我
们使用一个单独的显示线程去显示这些帧。如果只使用一个线程去完成对缓冲区解码和显示 的功能的话,那么任何一帧超过了它的实时预算(NTSC是33ms, PAL是40ms)都将会导 致帧的丢失。我们使用一个DISPLAY—BUFFERS显示缓冲区来把编码的处理过程与显示分 开,这样的话,视频系统就可以处理一个或者多个连续的帧。然而,DISPLAY—BUFFERS 的值越高,就会有更多连续的帧预算。不利的是,增加DISPLAY—BUFFERS还会增加视频 恢复时间和内存的需要。如图4所示,视频线程初始化的执行如下
1. 打开编码的视频文件。
2. 用函数(Engine—open())创建一个编/解码器实例,这个函数的返回值是一个句柄,所有使 用相同编/解码器的线程需要各自的句柄。
3. 用函数(videoDecodeAlgCreateO)创建视频解码器接下来创建音频解码算法的实例,目前 这个解码显示程序所支持的视频解码算法是MPEG2、 H.264和MPEG4。使用函数 (VIDDEC—create0)中的静态参数来创建编/解码器的实例,然后用函数 (VIDDEC—comroi())来设置视频解码器的动态参数。视频解码器会调用.函数 (VIDDEC—control())来得出在最坏的情况下编码缓冲区的大小,这个值我们会在'数据加 载器中使用。
4. 用函数(Memory—contigAlloc())给编码数据分配连续的缓冲区。
5. 用函数(Memory一contigAlloc())分配连续的显示缓冲区。
当视频线程完成了初始化之后,它将使用Rendezvous实用单元与其它^程进行同步。只有 当其它线程也都完成了初始化之后,视频线程的主循环才会开始执行。
> 视频线程交互(Video Thread Interaction)
图5显示了在处理一个视频帧时,从视频线程的角度描述视频线程和显示线程主循环之 间的交互(线程已经被Rendezvous对象释放)。
首先用函数(loaderPrime(》初始化数据加载器,然后视频线程用函数(FifoUtiLput(》初始化显示线程,当显示线程中所有DISPLAY—BUFFERS已经做好返回到视频线程的准备后, 主循环开始执行。
视频线程的主循环是通过用函数(FifoUtiLgetO)向显示线程申请一个显示缓冲区开始 的。然后DSP内核将编码的帧进行解码,用函数(VIDDECjjrocess())把解码后的帧放到显示 缓冲中。完成后,显示缓冲己经包含了解码后的视频帧,使用函数(FifoUtiLput())后会有一 个指针指向显示缓冲。在开始下一次主循环之前,我们用函数(loaderGetFrame())来从文件系 统中读取一个新的编码帧。
与此同时,显示线程正在使用函数(FifoUtiLget())等待视频线程传来了一个Buffer (解 码缓冲区)。当接受到这个Buffer以后,使用函数(Rszc叩Lexecute())将Buffer复制到显示 设备驱动的帧缓冲(Frame—Buffer)中。复制完成后,显示线程通过函数(FifoUtiLput())返回 到了视频线程中获得下一个解码缓冲区,这样播放器就可以完整地将视频文件播放出来。 本发明的用于对等计算机顶盒的播放器的控制方法具体包括以下的步骤 步骤l).进行需求分析,对播放器系统需要完成的功能进行分析,并生成需求分析文档, 步骤2).按照步骤1)的分析文档设计模块,对各模块的功能进行详细分析,生成各个 模块之间的逻辑关系和功能说明文档,
步骤3).按照步骤2)的文档,设计与实现播放器的主线程和控制线程,在主线程包括终 端指令解析、音频和视频解码主线程最后转化为控制线程,控制线程则控制了播放器的状 态,
步骤4).按照步骤2)的文档,设计与实现音频文件和视频文件的解码和播放,以及解 析媒体文件的格式是否被播放器所支持,
步骤5).按照步骤2)的文档,设计与实现文件载入和共享模块,媒体文件在播放之前 首先进行判断文件的格式,播放器支持的视频文件格式有MPEG1、 MPEG2、 MPEG4、 AVS 和H.264,播放器支持的音频文件格式有ACC、 MPEG1L2和MPEG1L3;接着播放器初始 化要播放所需的解码器,播放器一帧一帧地读入媒体文件进行解码,然后将数据读入到一个 固定的内存空间Buffer中进行解码并且将Buffer的数据录制到本地硬盘中,P2P协议就用 在这里,通过P2P的方式对以前的或者现在正在看的视频进行P2P共享,这样相邻节点之 间就可以进行P2P通信,实现边播放边共享的目的;
步骤6).播放器的功能有播放、暂停、停止、定位、快进和快退,可以通过遥控器上相 应的播放按键、暂停按键、停止按键、定位按键、快进按键和快退按键来实现相应的功能, 其中定位功能是当定位按键按下以后,电视屏幕上会出现选时框,用户通过遥控器上的0 到9数字键输入播放器要定位的时间,选时框的格式为时:分:秒,当用户填入时间按下确认 键后播放器会自动定位到相应的时间开始播放。
有益效果本发明通过对采用P2P技术的IPTV机顶盒的功能与需,进行详细划分,采 用模块化设计和人性化设计的思想,本着拥有良好人机交互界面的原则',提出并实现了P2P 机顶盒的播放器。技术的关键点是不仅要满足机顶盒的各项功能需求,还要让系统拥有稳定 性、可靠性以及拥有良好的人机交互界面。下面我们给出具体说明。
完善的功能通过对机顶盒播放器功能与需求的详细划分,为了保证播放器在各种情况 下能正常工作,有必要对播放器内部的各种状态进行统一管理。本设计把播放器状态进行了 分类,主要采用状态迁移表的方式实现迁移。播放器状态有空闲、连接、缓冲、播放、
7暂停、快进和快退。他们之间的迁移为一个有限状态机。播放器控制命令有播放、停止、 定位、暂停、恢复、快进和快退。
模掩化设计整个播放器的按照功能模块进行划分,主线程模块描述了整个播放器的流 程,主线程模块在完成用户要求后转换为控制线程,控制线程可以有效地完成用户对播放器 的操作,播放器的主要功能模块有视频、音频、显示、语音和文件载入共享,文件载入共享 由P2P方式实现。
良好的系统扩展性由于系统模块之间采用的是独立模块化,功能并行层次化设计,系 统模块之间的通信机制完全采用层次化的结构,因此可以方便的添加新的功能,也可以很容 易的升级现有的功能,所以该系统拥有良好的可扩展性。
髙度的可靠性和稳定性通过对播放器系统的单元测试,集成测试以及整个机顶盒软件 系统的系统测试表明该播放器系统运行状况良好,占用系统资源少,拥有良好的容错机制以 及灾难恢复能力,能够适应不同级别处理器速度。
易操作以及界面美观由于该系统采用人性化设计,并且对界面进行了美化,使得该系 统使用遥控器操作,方便快捷,反应速度灵敏,界面操作简单,功能强大,使用遥控器按键 可以实现播放器的所有功能,具有较高的市场推广潜质和商业应用价值。


图1是播放器的整体结构图,
图2是主线程的流程,
图3是音频解码的示意图,
图4是视频线程示意图,
图5是视频显示交互线程示意图。
具体实施例方式
图1是播放器的整体结构图,播放器包括五个单独的POSIX线程(即pthreads):主线 程(主线程最终会成为控制线程)、视频线程、显示线程、音频线程和语音线程。后面这四 个线程是在主线程成为控制线程之前由主线程生成的。播放器可以播放单独的音频或视频文 件,也可以播放音视频文件,但不可以同时播放两个相同类型的文件。
图2是主线程的流程,首先我们通过显示设备驱动的函数(FBIO一GETSTD—kx;ll())来检 测所使用的视频标准(PAL或NTSC),然后在解析命令行参数的同时建立线程的环境变量。 初始化编/译码器和它的事件跟踪模块(TraceUtil)来进行追踪记录。打开暂停(Pause)对象和会 合(Rendezvous)对象来同步所创建的线程。当一个或者多个线程被创建后,将调用控制线程 的主函数(ctriThrFxn()),这样主线程将会成为控制线程。 ,
图3是音频线程的作用是从嵌入式文件系统中读入编码的音频数i,然后选择音频解 码器进行解码,将结果写到AIC33设备驱动中,本图详细地描绘了音频解码的每一步。
图4是视频线程,它的作用是从系统中读入编码的视频数据,然后选择视频解码器进行 解码,最后将解码后的媒体流输入终端显示器。
图5是用函数(loaderPrimeO)初始化数据加载器,然后视频线程用函数(FifoUtiLput())初 始化显示线程,当显示线程中所有DISPLAY—BUFFERS(显示缓冲区)已经做好返回到视频线程的准备后,主循环开始执行,视频解码和视频文件的显示在图中有详细的描绘。 用于对等计算机顶盒的播放器的控制方法包括以下的步骤
步骤l).进行需求分析,对播放器系统需要完成的功能进行分析,并生成需求分析文档,
步骤2).按照步骤1)的分析文档设计模块,对各模块的功能进行详细分析,生成各个 模块之间的逻辑关系和功能说明文档,
步骤3).按照步骤2)的文档,设计与实现播放器的主线程和控制线程,在主线程包括终 端指令解-析、音频和视频解码主线程最后转化为控制线程,控制线程则控制了播放器的界 面和用户的终端指令,
步骤4).按照步骤2)的文档,设计与实现音频文件和视频文件的解码和播放,以及解 析媒体文件的格式是否被播放器所支持,
步骤5).按照步骤2)的文档,设计与实现文件载入和共享模块,媒体文件在播放之前 首先进行判断文件的格式,播放器支持的视频文件格式有MPEG1、 MPEG2、 MPEG4、 AVS 和H.264,播放器支持的音频文件格式有ACC、 MPEG1L2和MPEG1L3;接着播放器初始 化要播放所需的解码器,播放器一帧一帧地读入媒体文件进行解码,然后将数据读入到一个 固定的内存空间Buffer中进行解码并且将Buffer的数据录制到本地硬盘中,P2P协议就用 在这里,通过P2P的方式对以前的或者现在正在看的视频进行P2P共享,这样相邻节点之 间就可以进行P2P通信,实现边播放边共享的目的;
步骤6).播放器的功能有播放、暂停、停止、定位、快进和快退,可以通过遥控器上相 应的播方夂按键、暂停按键、停止按键、定位按键、快进按键和快退按键来实现相应的功能, 其中定位功能是当定位按键按下以后,电视屏幕上会出现选时框,用户通过遥控器上的0 到9数字键输入播放器要定位的时间,选时框的格式为时:分:秒,当用户填入时间按下确认 键后播放器会自动定位到相应的时间开始播放。
播放器经过编辑、编译和连接生成可执行文件后,我们就可以用这个可执行文件或者 说是播放器来播放媒体文件,我们按照播放器设计流程来介绍,采用遍历播放器所有功能的 方式描述播放器系统各个部分在开发中所处的位置以及功能,这样便可以体现出我们对整个 播放器系统的总体规划以及详细设计 1主线程和控制线程的设计于实现
主线程首先通过显示设备驱动提供的接口函数检测所使用的视频标准(PAL或NTSC), 然后在进行参数解析的同时建立线程的环境变量。初始化编/译码器和它的数字解码器模块 来进行追踪记录。打开暂停(Pause)对象和会合(Rendezvous)对象来同步所创建的线程。当一 个或者多个线程被创建后,将调用控制线程的主函数(ctrlThrFxn()),这样主线程将会成为控 制线程。控制线程主要负责用户界面,它使用不停地査看遥控器是否有命令输入。 一旦接收 到一个新的命令或者是命令行中输入了命令,命令就能够被识别并且,应的动作会在函数 (keyAction())中执行。因为需要去检査是否有新的按键被按下,所以在g受一个新命令之前, 要使用函数(usleep())使线程休眠一会儿。
控制线程还要绘制并更新OSD(On Screen Display)的文本信息和图形。OSD窗口必须在 视频窗口的前面。OSD的透明性是指通过OSD可以看到的视频窗口的多少,它是用属性窗 口设置的。在属性窗口中,每一个像素的透明性是通过一个半位元表示的(4比特),它的 值从0取到7。控制线程用函数(setOsdTransparency())来设置OSD窗口的透明性。播放器状态有空闲、连接、缓冲、播放、暂停、 快进和快退。他们之间的迁移为一个有限状态机。播放器控制命令有播放、停止、定位、 暂停、恢复、快进和快退。 2视频和音频的设计与实现
视频线程是从文件系统中读入编码的视频数据,然后选择视频解码器进行解码。为了获 得更高可信赖的性能,并且避免当有很多帧需要被解码时出现帧丢失的情况,我们使用一个 单独的显示线程去显示这些帧。如果只使用一个线程去完成对缓冲区解码和显示的功能的 话,那么任何一帧超过了它的实时预算(NTSC是33ms, PAL是40ms)都将会导致帧的丢 失。我们使用一个DISPLAY—BUFFERS显示缓冲区来把编码的处理过程与显示分开,这样 的话,视频系统就可以处理一个或者多个连续的帧。然而,DISPLAY—BUFFERS的值越高, 就会有更多连续的帧预算。不利的是,增加DISPLAY—BUFFERS还会增加视频恢复时间和 内存的需要。
音频线程是从文件系统中读入编码的音频数据,然后选择音频解码器进行解码,将结果 写到AIC33设备驱动中,首先使用函数打开编码的音频数据的源文件,初始化AIC33声音 设备驱动并配置声音设备,AIC33声音设备驱动目前只支持2个信道、16位小字节序的样 本。同时设置参数。因为语音算法使用8KHz的取样率,AIC33也设置成这个取样率。接着 创建一个编/解码器实例,返回一个句柄,所有使用相同编/解码器的线程需要各自的句柄。 当音频线程完成了初始化之后,它将使用会合(Rendezvous)实现单元与其它线程进行同步。 只有当其它线程也都完成了初始化之后,音频线程的主循环才会开始执行播放文件。 3文件载入和共享的设计与实现
媒体文件在播放之前首先被函数(loaderPrime())载入文件头进行判断文件的格式,播 放器支持的视频文件格式有MPEG1、 MPEG2、 MPEG4和H.264,播放器支持的音频文件 格式有ACC和MPEG1L2。接着播放器初始化要播放所需的解码器,函数(loaderGetFrame()) 一帧一帧地读入媒体文件进行解码,而不论是loaderPrime()函数还是loaderGetFrame()函数 都将数据读入到一个固定的Buffer (内存空间)中进行解码,所以P2P协议就用在这里,通 过P2P的方式对Buffer进行P2P共享,这样相邻节点就可以按需要对Buffer共享和播放, 对共享数据段Buffer所用的P2P方式读者可以参考有关资料实现,在这里就不再赘述,这 样就可以轻松地实现边播放边共享的目的,P2P播放器到此也实现完毕。
10
权利要求
1. 一种用于对等计算机顶盒的播放器的控制方法,其特征在于该播放器实现方法包括以下的步骤步骤1). 进行需求分析,对播放器系统需要完成的功能进行分析,并生成需求分析文档,步骤2). 按照步骤1)的分析文档设计模块,对各模块的功能进行详细分析,生成各个模块之间的逻辑关系和功能说明文档,步骤3). 按照步骤2)的文档,设计与实现播放器的主线程和控制线程,在主线程包括终端指令解析、音频和视频解码主线程最后转化为控制线程,控制线程则控制了播放器的界面和用户的终端指令,步骤4). 按照步骤2)的文档,设计与实现音频文件和视频文件的解码和播放,以及解析媒体文件的格式是否被播放器所支持,步骤5). 按照步骤2)的文档,设计与实现文件载入和共享模块,媒体文件在播放之前首先进行判断文件的格式,播放器支持的视频文件格式有MPEG1、MPEG2、MPEG4、AVS和H.264,播放器支持的音频文件格式有ACC、MPEG1L2和MPEG1L3;接着播放器初始化要播放所需的解码器,播放器一帧一帧地读入媒体文件进行解码,然后将数据读入到一个固定的内存空间Buffer中进行解码并且将Buffer的数据录制到本地硬盘中,P2P协议就用在这里,通过P2P的方式对以前的或者现在正在看的视频进行P2P共享,这样相邻节点之间就可以进行P2P通信,实现边播放边共享的目的;步骤6). 播放器的功能有播放、暂停、停止、定位、快进和快退,可以通过遥控器上相应的播放按键、暂停按键、停止按键、定位按键、快进按键和快退按键来实现相应的功能,其中定位功能是当定位按键按下以后,电视屏幕上会出现选时框,用户通过遥控器上的0到9数字键输入播放器要定位的时间,选时框的格式为时分秒,当用户填入时间按下确认键后播放器会自动定位到相应的时间开始播放。
全文摘要
一种用于对等计算机顶盒的播放器的控制方法是一种用于P2P(Peer-to-Peer)机顶盒的播放器,将P2P机顶盒中没有被完整下载下来的媒体文件播放出来,解决了P2P机顶盒边下载边播放边共享的问题,该播放器实现方法包括以下的步骤步骤1)进行需求分析,步骤2)按照步骤1)的分析文档设计模块,步骤3)按照步骤2)的文档,设计与实现播放器的主线程和控制线程,步骤4)按照步骤2)的文档,设计与实现音频文件和视频文件的解码和播放,步骤5)按照步骤2)的文档,设计与实现文件载入和共享模块,步骤6)播放器的功能有播放、暂停、停止、定位、快进和快退,当用户填入时间按下确认键后播放器会自动定位到相应的时间开始播放。
文档编号H04N5/44GK101442627SQ20081024342
公开日2009年5月27日 申请日期2008年12月17日 优先权日2008年12月17日
发明者敏 吴, 徐小龙, 支萌萌, 李玲娟, 李致远, 王汝传, 锋 贺, 韩志杰 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1