专利名称:一种流媒体播放方法及播放设备的制作方法
技术领域:
本发明涉及流媒体播放技术领域,更具体地说,涉及一种流媒体播放方法及播放设备。
背景技术:
DirectX是由微软公司开发的用途广泛的应用程序编程接口(API),它包含有 Direct Graphics(Direct 3D+Direct Draw)>Direct Input、Direct Play、Direct Sound、 Direct Show、Direct Setup, Direct Media Objects 等多个组件,它提供了一整套的多媒体接口方案。DirectX而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接Microsoft DirectDraw支持快速访问计算机视频适配器的加速硬件功能。它支持在所有视频适配器上显示图形的标准方法,并且使用加速驱动程序时可以更快更直接地访问。Microsoft DirectX 9. 0c DirectSiow为流媒体播放提供了功能完善的框架,但尽管框架这么完善,目前市面上的播放器包括Media Player、暴风影映、kmplay等等都无法实现 4k (4096 X 2160)超高分辩率、30帧/秒流媒体的流畅播放,主要有如下两方面瓶颈使得播放器无法实现超高分辨率流媒体的播放
一、CPU解压速度跟不上播放速度
由于目前CPU发展到多核CPU,所以解决CPU解压速度的问题一般都采用多核同时解压,从而使得CPU解压速度跟得上播放速度的,但这样就会产生一个新的问题对于巨幕电影的播放器,4k分辨率的视频帧需要整帧输出,才不至于需要将输出视频在巨幕上实现拼接,否则巨幕播放失去了根本意义。而普通的播放器是将整帧解压后整帧输出,这导致操作系统无法将整帧解压负担平均分配到CPU内部多核同时处理,结果造成CPU内部某个内核超负荷运行而其他内核无负担或很少负担的情况,CPU内部只要有一个内核超负荷运行就会造成播放器丢帧,从而使得播放不流畅;
二、计算机硬盘读速度跟不上播放速度
解决计算机硬盘读速度跟不上播放速度的问题,一般采用压缩率高的压缩算法,例如 h. 264或MPEG4等,但采用这种方法会碰到新的问题1)视频帧有点失真,视频质量达不到最佳效果;2)由于压缩率太高,造成播放时解压费时,使CPU解压速度跟不上。如果用当今数字电影界所倡导的MJPEG2000标准进行压缩,则视频质量可以,并且压缩率也适中,但由于用了小波变换解压算法,解压很费时,需专用的解压芯片支持,纯软件无法解决CPU解压速度瓶颈问题。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述对于超高分辨率的流媒体, CPU解压速度和硬盘读速度都跟不上播放速度的瓶颈问题,提供一种流媒体播放方法,能提高CPU解压速度,弥补硬盘读速度偶尔跟不上播放速度的缺陷。
本发明解决其技术问题所采用的技术方案是构造一种流媒体播放方法,包括 预先将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,所述小块帧
的帧号包括原视频帧的帧序标识及该小块帧在原视频帧里的位置标识,然后分别将该多个小块帧进行压缩,并将压缩的多个小块帧依序存储在硬盘同一文件中;
多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。在本发明所述的流媒体播放方法中,采用TrueMotion压缩方法对该多个小块帧进行压缩。在本发明所述的流媒体播放方法中,将流媒体的视频帧切分成3个小块帧。在本发明所述的流媒体播放方法中,所述帧序标识是所对应的原视频帧的序号的
整数倍。本发明还构造一种流媒体播放设备,包括
切分模块,用于将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,所述小块帧的帧号包括原视频帧的帧序标识及在该小块帧在原视频帧里的位置标识; 压缩模块,用于分别将该多个小块帧进行压缩; 存储模块,用于分别将压缩的多个小块帧存储在硬盘中; 读取模块,用于读取存储在硬盘中的多个压缩的小块帧;
解压合并模块,用于采用多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。在本发明所述的流媒体播放设备中,采用TrueMotion压缩方法对该多个小块帧进行压缩。在本发明所述的流媒体播放设备中,所述多个小块帧为3个小块帧。在本发明所述的流媒体播放设备中,采用大缓冲区技术读取硬盘多个小块帧。在本发明所述的流媒体播放设备中,所述帧序标识是对应的原视频帧的序号的整数倍。实施本发明的技术方案,具有以下有益效果
1.由于预先将视频帧切分成多个小块帧,并为每个小块帧分配一帧号,使所编的小块帧号包括原视频帧的帧序标识及在原视频帧里的位置标识,然后对每个小块帧进行压缩和存储。在播放流媒体时,多核CPU多线程根据每个小块帧的位置标识(帧号)将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。同时,由于解压和合并多个小块帧是同时进行的,所以避免了小块帧数据块的拷贝,大幅减轻了 CPU的负担,从而提高了 CPU 的解压速度,并且避免了画面的抖动,保证了高分辨率的视频流的流畅播放。另外,由于合并多个小块帧是CPU根据位置标识(帧号)以软件方式来实现的,所以不需要在巨幕上实现视频拼接;
2.对多个小块帧压缩采用TrueMotion压缩方法,既保证了视频质量,又使得压缩具有适中的压缩率。3.由于采用了大缓冲区技术读硬盘,解决了硬盘对小块帧读取速度不均勻缺陷, 保证了高分辨率视频流的流畅播放。
下面将结合附图及实施例对本发明作进一步说明,附图中 图1是本发明流媒体播放方法实施例一的流程图2是本发明流媒体播放设备实施例一的逻辑图。
具体实施例方式如图1所示,在本发明的流媒体播放方法实施例一的流程图中,该流媒体播放方法包括
步骤S100.预先将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号, 所述小块帧的帧号包括原视频帧的帧序标识及该小块帧在原视频帧里的位置标识,然后分别将该多个小块帧进行压缩,并将压缩的多个小块帧依序存储在硬盘同一文件中;
步骤S200.多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。在该步骤中,由于将同一视频帧的几个小块帧分别用不同的线程进行解压,也就是将一个视频帧的整帧的解压负担平均分配给 CPU内部的各内核。实施该实施例的技术方案,由于预先将视频帧切分成多个小块帧,并为每个小块帧分配一帧号,使所编的小块帧号包括原视频帧的帧序标识及在原视频帧里的位置标识, 然后对每个小块帧进行压缩和存储。在播放流媒体时,多核CPU根据每个小块帧的位置标识(帧号)将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。由于解压和合并多个小块帧是同时进行的,所以避免了小块帧数据块的拷贝,大幅减轻了 CPU的负担,从而提高了 CPU的解压速度,且避免了画面的抖动,保证了高分辨率的视频流的流畅播放。另外,由于合并多个小块帧是CPU根据位置标识(帧号)以软件方式来实现的,所以不需要在巨幕上实现视频拼接。优选地,对该多个小块帧进行压缩时,采用TrueMotion (真实的动感)压缩方法。 "TrueMotion是Sixense公司在2008年开发出来的用于3D动感电影的压缩方法。正因为运用了 3D效果处理,才使得压缩成的视频质量非常好,但压缩率并不高,而且每帧的压缩率大不一样,因此这种压缩方法使得硬盘读取帧的“读帧率”很不均勻,致使播放时,硬盘读帧速度有时会大于播放速度,有时可能又会小于播放速度,所以必须同时采用大缓冲区技术来缓冲视频帧的读取,以适配播放速度。优选地,将流媒体的视频帧切分成3个小块帧。优选地,所述帧序标识是对应的原视频帧的序号的整数倍。例如,设某视频帧的原序号是n,将该视频帧切分成3个小块,则该帧的三小块帧序号就是3n、3n+l、3n+2,此小块帧序号既标识了该小块帧属于哪一视频帧(第η帧),又标识了该小块帧在视频帧中的位置 (第O小块、第1小块第、2小块)。图2是本发明流媒体播放设备实施例一的逻辑图,该流媒体播放设备包括依次连接的切分模块11、压缩模块12、存储模块13、读取模块14和解压合并模块15。其中,切分模块11用于将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,,所述小块帧的帧号包括原视频帧的帧序标识及在该小块帧在原视频帧里的位置标识;压缩模块 12用于分别将该多个小块帧进行压缩;存储模块13用于分别将压缩的多个小块帧存储在硬盘中;读取模块14用于读取存储在硬盘中的多个压缩的小块帧;解压合并模块15用于采用多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。优选地,采用TrueMotion压缩方法对该多个小块帧进行压缩。优选地,多个小块帧为3个小块帧。优选地,采用大缓冲区技术读取硬盘小块帧。优选地,所述帧序标识是对应的原视频帧的序号的整数倍。本发明的流媒体播放方法和播放设备不仅仅适用于4k分辨率的视频,随着计算机硬件技术的发展,还可适用于池、化k、3^等分辨率的视频。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种流媒体播放方法,其特征在于,包括预先将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,所述小块帧的帧号包括原视频帧的帧序标识及该小块帧在原视频帧里的位置标识,然后分别将该多个小块帧进行压缩,并将压缩的多个小块帧依序存储在硬盘同一文件中;多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。
2.根据权利要求1所述的流媒体播放方法,其特征在于,采用TrueMotion压缩方法对该多个小块帧进行压缩。
3.根据权利要求1所述的流媒体播放方法,其特征在于,将流媒体的视频帧切分成3个小块帧。
4.根据权利要求1所述的流媒体播放方法,其特征在于,所述帧序标识是所对应的原视频帧的序号的整数倍。
5.一种流媒体播放设备,其特征在于,包括切分模块,用于将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,所述小块帧的帧号包括原视频帧的帧序标识及在该小块帧在原视频帧里的位置标识; 压缩模块,用于分别将该多个小块帧进行压缩; 存储模块,用于分别将压缩的多个小块帧存储在硬盘中; 读取模块,用于读取存储在硬盘中的多个压缩的小块帧;解压合并模块,用于采用多核CPU多线程根据每个小块帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。
6.根据权利要求5所述的流媒体播放设备,其特征在于,采用TrueMotion压缩方法对该多个小块帧进行压缩。
7.根据权利要求5所述的流媒体播放设备,其特征在于,所述多个小块帧为3个小块帧。
8.根据权利要求5所述的流媒体播放设备,其特征在于,采用大缓冲区技术读取硬盘多个小块帧。
9.根据权利要求5所述的流媒体播放设备,其特征在于,所述帧序标识是对应的原视频帧的序号的整数倍。
全文摘要
本发明涉及一种流媒体播放方法和播放设备,该播放方法包括预先将流媒体的视频帧切分成多个小块帧,并为每个小块帧分配一帧号,使所编的小块帧号包括原视频帧的帧序标识及在原视频帧里的位置标识,然后分别将该多个小块帧进行压缩,并将压缩的多个小块帧依序存储在硬盘同一文件中;多核CPU多线程根据每个小块帧的原视频帧的帧序标识和位置标识将多个小块帧解压到对应视频帧的对应位置,以合成待播放的视频帧。该方法可大幅提高CPU的解压速度,并且可以避免画面的抖动。
文档编号H04L29/06GK102547268SQ201010615908
公开日2012年7月4日 申请日期2010年12月30日 优先权日2010年12月30日
发明者丁亮, 刘道强, 徐海波, 戎志刚, 李明 申请人:深圳华强数码电影有限公司