当今市面上的手机普遍支持照相和录像功能,用户非常在意视频的播放性能,其播放性能直接影响着用户对手机的选择。媒体播放器(Media Player)包括视频播放、图像播放和音乐播放等。手机的媒体播放器通常存在的问题主要表现在以下几个方面:
● 图像/视频存储时间过长;
● 图像/视频存储文件太大;
● 视频播放出现“卡”的现象。
这里以视频播放器(Video Player)为例介绍图像播放的原理和播放性能提升方案。
视频播放器支持播放、快速向前/向后播放、暂停/恢复等。媒体播放器要做的就是将图像一幅接一幅地以一定的帧频(每秒播放的帧数,f/s)显示在手机屏幕上,而且与声音轨道同步,从而形成完整的动态视频效果。视频播放期间,同时还要对来电(Incoming Call)、电池低电提示做出响应。
帧频是指图像播放的速度,以每秒播放的帧数为度量单位。帧频太慢会使图像看起来有停顿感,帧频太快会使图像的细节变得模糊。通常每秒12帧(f/s)的帧频会得到最佳的播放效果。在手机上,需要根据硬件的性能确定最佳的帧频。
解决视频存储文件过大和播放时“卡”的问题需要利用多媒体数字信号编/解码器技术(Codecs)。Codecs可以大大减少存储的数据量,这是因为多媒体数字信号编/解码器丢弃了大量冗余信息。例如,如果天空是蓝色的,那么没有必要存储每个蓝色像素,而只要执行一条简单的指令,例如“把接下来的几百个像素绘成蓝色的”就足够了。此类压缩方法称为有损压缩。因为压缩得越高,所得到的图像质量就越差,在重放的图像中经常以人为干扰现象(即Glitches)的形式出现(例如,因为在图像中蓝色的天空可能是不均匀的蓝色,所以这种压缩越大,天空的细节就丢失得越多)。同理,音频部分也可以压缩。
除了对每个图像进行压缩之外,也可以只存储图像中必须更新(修改)的那部分内容,以节省存储空间和缩短处理时间。每个视频拥有多个关键帧,它们是视频中的一些特殊帧。这些关键帧每秒都会被完全更新。例如,一个视频中显示一个人正在讲话,当他正在说话时也许只有他的嘴和眼睛附近的一些区域需要更新,至少在几分之一秒后另一个关键帧到来之前是这样的。如果是这样,那么视频文件就可以只存储一些帧之间的那些变化,而不是存储构成每个单帧的全部数据。在每帧存储较少数据的情况下,视频文件就较小。因为只有较少的数据需要处理,所以播放起来也比较平滑。
媒体播放器的另一个技术是借助于欺骗眼睛的方法,减少视频所需要的数据数量。对于手机的视频图像来说,即使使用12 f/s,也能达到可接受的影像质量和相当平滑的运动效果。随着存储帧数的减少,视频文件也就变得更小了。
因此,为提高手机的视频播放性能,必须找到一种方法(算法)来提取视频数据中的关键帧。