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

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

Info

Publication number
CN101442627A
CN101442627A CNA2008102434245A CN200810243424A CN101442627A CN 101442627 A CN101442627 A CN 101442627A CN A2008102434245 A CNA2008102434245 A CN A2008102434245A CN 200810243424 A CN200810243424 A CN 200810243424A CN 101442627 A CN101442627 A CN 101442627A
Authority
CN
China
Prior art keywords
player
thread
file
video
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2008102434245A
Other languages
English (en)
Inventor
王汝传
贺锋
韩志杰
李玲娟
徐小龙
吴敏
支萌萌
李致远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Post and Telecommunication University
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CNA2008102434245A priority Critical patent/CN101442627A/zh
Publication of CN101442627A publication Critical patent/CN101442627A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Television Signal Processing For Recording (AREA)

Abstract

一种用于对等计算机顶盒的播放器的控制方法是一种用于P2P(Peer-to-Peer)机顶盒的播放器,将P2P机顶盒中没有被完整下载下来的媒体文件播放出来,解决了P2P机顶盒边下载边播放边共享的问题,该播放器实现方法包括以下的步骤:步骤1)进行需求分析,步骤2)按照步骤1)的分析文档设计模块,步骤3)按照步骤2)的文档,设计与实现播放器的主线程和控制线程,步骤4)按照步骤2)的文档,设计与实现音频文件和视频文件的解码和播放,步骤5)按照步骤2)的文档,设计与实现文件载入和共享模块,步骤6)播放器的功能有播放、暂停、停止、定位、快进和快退,当用户填入时间按下确认键后播放器会自动定位到相应的时间开始播放。

Description

一种用于对等计算机顶盒的播放器的控制方法
技术领域
本发明是一种用于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)和推播(Push VOD)视频节目的时候,可以通过用户端之间主动或自动的相互传递来发送视频内容,从而避免所有内容均从一个或少量服务器中发出而造成网络堵塞。但直到目前为止,所有其它的P2P解决方案和产品均是基于电脑的方案,而基于相对简单、廉价的IPTV机顶盒的P2P解决方案,由于其在有限资源上实施的相对技术难度,而一直未能解决。
基于ucLinux系统的嵌入式客户端、P2P机顶盒OSD(On Screen Display)管理系统、P2P下载系统和机顶盒播放器,这样就可以通过宽带和P2P机顶盒来实现P2P数字电视直播、P2P视频多播、P2P视频点播等应用。它将帮助IPTV业务提供者克服带宽限制,减少部署IPTV业务的投资,为快速部署和提供IPTV业务提供了条件。P2P机顶盒的出现将大大促进IPTV产业的发展,为IPTV应用开辟更加广阔的发展空间。
P2P机顶盒的重要组成部分是播放器,因为机顶盒自身的硬件计算能力的限制使得主流通用的播放器(如:Mplayer)并不能对机顶盒达到一般的支持,而机顶盒的CPU(CentralProcessing Unit)的计算能力太有限,所以流媒体文件的编码和解码一般都是由特制的DSP(Digital Singnal Processor)来完成,这样一款好的P2P机顶盒产品必然要有一个好的播放器,这也是本文的价值所在。
本技术的设计方案已经在达芬奇数字平台(DaVinci)TMS320DM6446上做了试验并证明了可行性,达芬奇数字平台(DaVinci)TMS320DM6446是TI公司新提供的面向视频开发领域,拥有ARM(Advanced RISC Machines)和DSP(Digital Singnal Processor)双CPU(CentralProcessing 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):主线程(主线程最终会成为控制线程)、视频线程、显示线程、音频线程和语音线程。后面这四个线程是在主线程成为控制线程之前由主线程生成的。只有从输入一个视频文件时,视频线程和显示线程才会被创建。同理,只有输入一个音频(或语音)文件时,音频线程(或语音线程)才会被创建。用户必须至少要提供一个文件(音频、视频或语音),但是因为音频和语音所使用的外围设备是相同的,所以一次只能提供一个音频或语音文件。
除了主线程以外,其它的所有线程都有自己的优先级并遵循以优先级为基础的调度策略。各个线程的优先级从高到低依次为:显示线程、视频线程、语音/音频线程、控制线程。在图1中给出了系统流程。
我们用会合实用模块(Rendezvous utility module)来同步各个线程的初始化和清除,这个模块是在主线程中被初始化的。每个线程完成了初始化以后会通知会合对象,当所有的线程都完成初始化以后,才会同时被解锁并开始执行各自的主循环。对各个线程清除进行同步的方法是一样的。通过这种方法,可以保证各个线程所共享的缓冲区在同一时间内只能允许一个线程使用。
二、方法流程
该部分详细说明发明内容各个部分的设计与实现:
主线程(Main Thread)
主线程的作用是:
(1)执行必要的初始化任务;
(2)解析用户提供的命令行参数;
(3)根据命令行参数的值来产生其它的线程。
如图2所示,首先我们通过函数ioctl(FBIO_GETSTD)来检测所使用的视频标准(PAL或NTSC),然后在进行命令行参数的解析的同时建立线程的环境变量。初始化编/译码器和它的解码器跟踪模块来进行追踪记录。然后根据传递给应用程序的命令行参数来创建线程,打开暂停(Pause)对象和会合(Rendezvous)对象来同步所创建的线程。当一个或者多个线程被创建后,将调用控制线程的主函数(ctrlThrFxn()),这样主线程将会成为控制线程。
Figure A200810243424D00052
控制线程(Control Thread)
控制线程主要负责用户界面,它使用不停地查看遥控器是否有命令输入。一旦接收到一个新的命令或者是命令行中输入了命令,命令就能够被识别并且响应的动作会在函数(keyAction())中执行。因为需要去检查是否有新的按键被按下,所以在接受一个新命令之前,要使用函数(usleep())使线程休眠一会儿。
控制线程还要绘制并更新OSD(On Screen Display)的文本信息和图形。OSD窗口必须在视频窗口的前面。OSD的透明性是指通过OSD可以看到的视频窗口的多少,它是用属性窗口设置的。在属性窗口中,每一个像素的透明性是通过一个半位元表示的(4比特),它的值从0取到7。控制线程用函数(setOsdTransparency())来设置OSD窗口的透明性。
控制线程用函数(simpleWidget())来在OSD上绘制按钮和文本。在控制线程中,用函数(osdInit())来初始化OSD设备,函数(uiCreate())用来在OSD上创建和绘制静态的文本和按钮。除此之外,大约每秒钟函数(drawDynamicData())都会去更新动态文本,这个函数从其它线程中搜集性能数据并且把它们在OSD上显示出来。因为这些数据是从几个线程中获取来的,所以必须用一个互斥量来保护这些数据,而且对这些变量的安全读取已经封装在了头文件的内联函数中了。函数(getArmCpuLoad())用来计算ARM的CPU负载(用百分数表示),而编/解码器会调用函数(Engine_getCpuLoad())来计算DSP的负载率。
音频线程(Audio Thread)
音频线程的作用是从文件系统中读入编码的音频数据,然后选择音频解码器进行解码,将解码结果写到AIC33设备驱动中并且终端将其播放出来,具体流程如图3所示。
1.使用函数(open())打开编码的音频数据的源文件。
2.初始化AIC33声音设备驱动。首先配置声音设备(/dev/dsp),AIC33声音设备驱动目前只支持2个信道、16位小字节序的样本。同时设置参数。因为语音算法使用8KHz的取样率,AIC33也设置成这个取样率。
3.用函数(Engine_open())创建一个编/解码器实例,这个函数的返回值是一个句柄,所有使用相同编/解码器的线程需要各自的句柄。
4.接下来创建音频解码算法的实例,使用的函数(AUDDEC_create())。目前所支持的音频解码算法是AAC和MPEG1L2。这个函数将返回一个句柄供后面的主循环中解码数据时使用。
5.用函数(Memory_contigAlloc())分配一块大小为READBUFSIZE(程序中设置的是60K)的缓冲区。这个缓冲区将在后面的数据加载器中用来存放从嵌入式文件系统中读出来的编码数据。
6.再分配一块连续的内存空间,这是用来存放解码后的数据的。需要注意的是这两块缓冲区必须都要是连续的。
当音频线程完成了初始化之后,它将使用Rendezvous实用单元与其它线程进行同步。只有当其它线程也都完成了初始化之后,音频线程的主循环才会开始执行,主循环的流程如下:
a.初始化编码文件加载器,并且读入一帧的编码数据。
b.调用函数(AUDDEC_process())对读入的编码数据进行解码。这是编/解码器的一个过程调用,它可以使用音频算法去解码缓冲区。
c.使用UNIX标准的函数(write())将解码后的数据写到AIC33设备驱动上。
d.继续读入一帧编码的数据,然后回到第b步。这个循环将会一直执行知道控制线程通知应用程序退出为止。
视频线程(Video Thread)
视频线程的作用是从系统中读入编码的视频数据,然后选择视频解码器进行解码。
为了获得更高可信赖的性能,并且避免当有很多帧需要被解码时出现帧丢失的情况,我们使用一个单独的显示线程去显示这些帧。如果只使用一个线程去完成对缓冲区解码和显示的功能的话,那么任何一帧超过了它的实时预算(NTSC是33ms,PAL是40ms)都将会导致帧的丢失。我们使用一个DISPLAY_BUFFERS显示缓冲区来把编码的处理过程与显示分开,这样的话,视频系统就可以处理一个或者多个连续的帧。然而,DISPLAY_BUFFERS的值越高,就会有更多连续的帧预算。不利的是,增加DISPLAY_BUFFERS还会增加视频恢复时间和内存的需要。如图4所示,视频线程初始化的执行如下:
1.打开编码的视频文件。
2.用函数(Engine_open())创建一个编/解码器实例,这个函数的返回值是一个句柄,所有使用相同编/解码器的线程需要各自的句柄。
3.用函数(videoDecodeAlgCreate())创建视频解码器接下来创建音频解码算法的实例,目前这个解码显示程序所支持的视频解码算法是MPEG2、H.264和MPEG4。使用函数(VIDDEC_create())中的静态参数来创建编/解码器的实例,然后用函数(VIDDEC_control())来设置视频解码器的动态参数。视频解码器会调用函数(VIDDEC_control())来得出在最坏的情况下编码缓冲区的大小,这个值我们会在数据加载器中使用。
4.用函数(Memory_contigAlloc())给编码数据分配连续的缓冲区。
5.用函数(Memory_contigAlloc())分配连续的显示缓冲区。
当视频线程完成了初始化之后,它将使用Rendezvous实用单元与其它线程进行同步。只有当其它线程也都完成了初始化之后,视频线程的主循环才会开始执行。
视频线程交互(Video Thread Interaction)
图5显示了在处理一个视频帧时,从视频线程的角度描述视频线程和显示线程主循环之间的交互(线程已经被Rendezvous对象释放)。
首先用函数(loaderPrime())初始化数据加载器,然后视频线程用函数(FifoUtil_put())初始化显示线程,当显示线程中所有DISPLAY_BUFFERS已经做好返回到视频线程的准备后,主循环开始执行。
视频线程的主循环是通过用函数(FifoUtil_get())向显示线程申请一个显示缓冲区开始的。然后DSP内核将编码的帧进行解码,用函数(VIDDEC_process())把解码后的帧放到显示缓冲中。完成后,显示缓冲已经包含了解码后的视频帧,使用函数(FifoUtil_put())后会有一个指针指向显示缓冲。在开始下一次主循环之前,我们用函数(loaderGetFrame())来从文件系统中读取一个新的编码帧。
与此同时,显示线程正在使用函数(FifoUtil_get())等待视频线程传来了一个Buffer(解码缓冲区)。当接受到这个Buffer以后,使用函数(Rszcopy_execute())将Buffer复制到显示设备驱动的帧缓冲(Frame_Buffer)中。复制完成后,显示线程通过函数(FifoUtil_put())返回到了视频线程中获得下一个解码缓冲区,这样播放器就可以完整地将视频文件播放出来。
本发明的用于对等计算机顶盒的播放器的控制方法具体包括以下的步骤:
步骤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技术的IPTV机顶盒的功能与需求进行详细划分,采用模块化设计和人性化设计的思想,本着拥有良好人机交互界面的原则,提出并实现了P2P机顶盒的播放器。技术的关键点是不仅要满足机顶盒的各项功能需求,还要让系统拥有稳定性、可靠性以及拥有良好的人机交互界面。下面我们给出具体说明。
完善的功能:通过对机顶盒播放器功能与需求的详细划分,为了保证播放器在各种情况下能正常工作,有必要对播放器内部的各种状态进行统一管理。本设计把播放器状态进行了分类,主要采用状态迁移表的方式实现迁移。播放器状态有::空闲、连接、缓冲、播放、暂停、快进和快退。他们之间的迁移为一个有限状态机。播放器控制命令有:播放、停止、定位、暂停、恢复、快进和快退。
模块化设计:整个播放器的按照功能模块进行划分,主线程模块描述了整个播放器的流程,主线程模块在完成用户要求后转换为控制线程,控制线程可以有效地完成用户对播放器的操作,播放器的主要功能模块有视频、音频、显示、语音和文件载入共享,文件载入共享由P2P方式实现。
良好的系统扩展性:由于系统模块之间采用的是独立模块化,功能并行层次化设计,系统模块之间的通信机制完全采用层次化的结构,因此可以方便的添加新的功能,也可以很容易的升级现有的功能,所以该系统拥有良好的可扩展性。
高度的可靠性和稳定性:通过对播放器系统的单元测试,集成测试以及整个机顶盒软件系统的系统测试表明该播放器系统运行状况良好,占用系统资源少,拥有良好的容错机制以及灾难恢复能力,能够适应不同级别处理器速度。
易操作以及界面美观:由于该系统采用人性化设计,并且对界面进行了美化,使得该系统使用遥控器操作,方便快捷,反应速度灵敏,界面操作简单,功能强大,使用遥控器按键可以实现播放器的所有功能,具有较高的市场推广潜质和商业应用价值。
附图说明
图1是播放器的整体结构图,
图2是主线程的流程,
图3是音频解码的示意图,
图4是视频线程示意图,
图5是视频显示交互线程示意图。
具体实施方式
图1是播放器的整体结构图,播放器包括五个单独的POSIX线程(即pthreads):主线程(主线程最终会成为控制线程)、视频线程、显示线程、音频线程和语音线程。后面这四个线程是在主线程成为控制线程之前由主线程生成的。播放器可以播放单独的音频或视频文件,也可以播放音视频文件,但不可以同时播放两个相同类型的文件。
图2是主线程的流程,首先我们通过显示设备驱动的函数(FBIO_GETSTD_ioctl())来检测所使用的视频标准(PAL或NTSC),然后在解析命令行参数的同时建立线程的环境变量。初始化编/译码器和它的事件跟踪模块(TraceUtil)来进行追踪记录。打开暂停(Pause)对象和会合(Rendezvous)对象来同步所创建的线程。当一个或者多个线程被创建后,将调用控制线程的主函数(ctrlThrFxn()),这样主线程将会成为控制线程。
图3是音频线程的作用是从嵌入式文件系统中读入编码的音频数据,然后选择音频解码器进行解码,将结果写到AIC33设备驱动中,本图详细地描绘了音频解码的每一步。
图4是视频线程,它的作用是从系统中读入编码的视频数据,然后选择视频解码器进行解码,最后将解码后的媒体流输入终端显示器。
图5是用函数(loaderPrime())初始化数据加载器,然后视频线程用函数(FifoUtil_put())初始化显示线程,当显示线程中所有DISPLAY_BUFFERS(显示缓冲区)已经做好返回到视频线程的准备后,主循环开始执行,视频解码和视频文件的显示在图中有详细的描绘。
用于对等计算机顶盒的播放器的控制方法包括以下的步骤:
步骤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数字键输入播放器要定位的时间,选时框的格式为时:分:秒,当用户填入时间按下确认键后播放器会自动定位到相应的时间开始播放。
播放器经过编辑、编译和连接生成可执行文件后,我们就可以用这个可执行文件或者说是播放器来播放媒体文件,我们按照播放器设计流程来介绍,采用遍历播放器所有功能的方式描述播放器系统各个部分在开发中所处的位置以及功能,这样便可以体现出我们对整个播放器系统的总体规划以及详细设计:
1 主线程和控制线程的设计于实现
主线程首先通过显示设备驱动提供的接口函数检测所使用的视频标准(PAL或NTSC),然后在进行参数解析的同时建立线程的环境变量。初始化编/译码器和它的数字解码器模块来进行追踪记录。打开暂停(Pause)对象和会合(RendezvouS)对象来同步所创建的线程。当一个或者多个线程被创建后,将调用控制线程的主函数(ctrlThrFxn()),这样主线程将会成为控制线程。控制线程主要负责用户界面,它使用不停地查看遥控器是否有命令输入。一旦接收到一个新的命令或者是命令行中输入了命令,命令就能够被识别并且响应的动作会在函数(keyAction())中执行。因为需要去检查是否有新的按键被按下,所以在接受一个新命令之前,要使用函数(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播放器到此也实现完毕。

Claims (1)

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数字键输入播放器要定位的时间,选时框的格式为时:分:秒,当用户填入时间按下确认键后播放器会自动定位到相应的时间开始播放。
CNA2008102434245A 2008-12-17 2008-12-17 一种用于对等计算机顶盒的播放器的控制方法 Pending CN101442627A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008102434245A CN101442627A (zh) 2008-12-17 2008-12-17 一种用于对等计算机顶盒的播放器的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008102434245A CN101442627A (zh) 2008-12-17 2008-12-17 一种用于对等计算机顶盒的播放器的控制方法

Publications (1)

Publication Number Publication Date
CN101442627A true CN101442627A (zh) 2009-05-27

Family

ID=40726850

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008102434245A Pending CN101442627A (zh) 2008-12-17 2008-12-17 一种用于对等计算机顶盒的播放器的控制方法

Country Status (1)

Country Link
CN (1) CN101442627A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827242A (zh) * 2010-05-10 2010-09-08 南京邮电大学 一种基于网络电视机顶盒的可视电话系统实现方法
CN103517126A (zh) * 2012-06-19 2014-01-15 华为技术有限公司 马赛克视频呈现的方法、显示控制装置及终端
CN103984529A (zh) * 2014-05-15 2014-08-13 中国人民解放军国防科学技术大学 基于飞腾处理器的x图形系统并行加速方法
CN105704533A (zh) * 2016-01-21 2016-06-22 深圳市金立通信设备有限公司 一种应用控制方法及终端
CN105898476A (zh) * 2014-12-08 2016-08-24 封雷迅 一种方便英语学习的按键组合
CN107197173A (zh) * 2017-05-08 2017-09-22 惠州市德赛西威汽车电子股份有限公司 一种控制车载导航器视频切换的方法及装置
CN111475147A (zh) * 2019-01-24 2020-07-31 西安诺瓦电子科技有限公司 视频处理方法、系统、装置及其开发系统以及存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827242A (zh) * 2010-05-10 2010-09-08 南京邮电大学 一种基于网络电视机顶盒的可视电话系统实现方法
CN101827242B (zh) * 2010-05-10 2013-01-02 南京邮电大学 一种基于网络电视机顶盒的可视电话系统实现方法
CN103517126A (zh) * 2012-06-19 2014-01-15 华为技术有限公司 马赛克视频呈现的方法、显示控制装置及终端
CN103984529A (zh) * 2014-05-15 2014-08-13 中国人民解放军国防科学技术大学 基于飞腾处理器的x图形系统并行加速方法
CN103984529B (zh) * 2014-05-15 2016-06-22 中国人民解放军国防科学技术大学 基于飞腾处理器的x图形系统并行加速方法
CN105898476A (zh) * 2014-12-08 2016-08-24 封雷迅 一种方便英语学习的按键组合
CN105704533A (zh) * 2016-01-21 2016-06-22 深圳市金立通信设备有限公司 一种应用控制方法及终端
CN107197173A (zh) * 2017-05-08 2017-09-22 惠州市德赛西威汽车电子股份有限公司 一种控制车载导航器视频切换的方法及装置
CN111475147A (zh) * 2019-01-24 2020-07-31 西安诺瓦电子科技有限公司 视频处理方法、系统、装置及其开发系统以及存储介质
CN111475147B (zh) * 2019-01-24 2024-03-15 西安诺瓦星云科技股份有限公司 视频处理方法、系统、装置及其开发系统以及存储介质

Similar Documents

Publication Publication Date Title
CN101442627A (zh) 一种用于对等计算机顶盒的播放器的控制方法
JP7386990B2 (ja) ビデオ再生方法、装置、機器及びコンピュータプログラム
US8856212B1 (en) Web-based configurable pipeline for media processing
EP3790284A1 (en) Interactive video generation
CA3120826A1 (en) Techniques for managing generation and rendering of user interfaces on client devices
WO2006115604A2 (en) Media timeline sorting
CN109325145A (zh) 视频缩略图的获取方法、终端及计算机可读存储介质
CN102857533B (zh) 一种基于云计算的远程交互式系统
CN103200396A (zh) 基于信息展示平台的实时视频流显示方法及系统
US20230283813A1 (en) Centralized streaming video composition
CN101389020A (zh) 一种扩展流媒体播放设备解码能力的方法
CN102857531B (zh) 一种基于云计算的远程交互式系统
US7941739B1 (en) Timeline source
US7934159B1 (en) Media timeline
Tzruya et al. Games@ Large-a new platform for ubiquitous gaming and multimedia
JP2010146575A (ja) メディア処理方法
CN112836158A (zh) 显示设备上的资源加载方法及显示设备
CN102857535B (zh) 一种计算机处理单元、计算机网关、交互式系统
CN102857534B (zh) 一种基于云计算的远程交互方法
CN113138745B (zh) 一种显示设备和音频数据写入方法
CN111866508B (zh) 视频处理方法、装置、介质及电子设备
Black et al. A compendium of robust data structures
TWI607403B (zh) 遠程處理客戶端交互的裝置
CN116016968B (zh) 一种音视频数据的处理方法、装置、存储介质及电子设备
CN102857532B (zh) 一种基于云计算节点的远程交互方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090527