预计阅读本页时间:-
7.6.3 具有VCR功能的近似视频点播
将近似视频点播(为的是效率)加上每个个体观众完全的VCR控制(为的是方便用户)是一种理想的组合。通过对模型进行略微的修正,这样的设计是有可能的。下面我们将介绍为达到这一目标所采用的一种方法(Abram-Profeta和Shin,1998),我们给出的是略微简化了的描述。
我们将以图7-17所示的标准近似视频点播模式为开端。可是,我们要增加要求,即要求每个客户机在本地缓冲前∆T分钟以及即将来临的∆T分钟。缓冲前∆T分钟是十分容易的:只要在显示之后将其保存下来即可。缓冲即将来临的∆T分钟是比较困难的,但是如果客户机有一次读两个数据流的能力也是可以实现的。
可以用一个例子来说明建立缓冲区的一种方法。如果一个用户在8:15开始观看电影,那么客户机读入并显示8:15的数据流(该数据流正处于第0帧)。与此并行,客户机读入并保存8:10的数据流,该数据流当前正处于5分钟的标记处(也就是第9000帧)。在8:20时,第0帧至第17 999帧已经被保存下来,并且用户下面将要看到的应该是第9000帧。从此刻开始,8:15的数据流被放弃,缓冲区用8:10的数据流(该数据流正处于第18 000帧)来填充,而显示则从缓冲区的中间点(第9000帧)驱动。当每一新的帧被读入时,在缓冲区的终点处添加一帧,而在缓冲区的起点处丢弃一帧。当前被显示的帧称为播放点(play point),它总是处于缓冲区的中间点。图7-18a所示为电影播放到第75分钟时的情形。此时,70分钟到80分钟之间所有的帧都在缓冲区中。如果数据率是4 Mbps,则10分钟的缓冲区需要300M字节的存储容量。以目前的价格,这样的缓冲区肯定可以在磁盘中保持,并且在RAM中保持也是可能的。如果希望使用RAM,但是300M字节又太大,那么可以使用小一些的缓冲区。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

现在假设用户决定要快进或者快倒。只要播放点保持在70到80分钟的范围之内,显示就可以从缓冲区馈入。然而,如果播放点在某个方向离开了这一区间,我们就遇到了问题。解决方法是开启一个私有(也就是视频点播)数据流以服务于用户。沿着某个方向快速运动可以用前面讨论过的技术来处理。
通常,在某一时刻用户可能会安下心来决定再次以正常速度观看电影。此时,我们可以考虑将用户迁移到某一近似视频点播数据流,这样私有数据流就可以被放弃。例如,假设用户决定返回到12分钟标号处,如图7-18b所示。这一点远远超出了缓冲区的范围,所以显示不可能从缓冲区馈入。此外,由于切换(立刻)发生在第75分钟,系统中存在着正在显示电影第5、10、15和20分钟那一帧的数据流,但是没有显示电影第12分钟那一帧的数据流。
解决方法是继续观看私有数据流,但是开始从当前正播放电影第15分钟那一帧的数据流填充缓冲区。经过3分钟之后的情形如图7-18c所示。播放点现在是第15分钟,缓冲区包含了15到18分钟的帧,而近似视频点播数据流正处在第8、13、18和23分钟。在这一时刻,私有数据流可以被放弃,显示可以从缓冲区馈入。缓冲区继续从现在正处于第18分钟的数据流填充。经过另一分钟之后,播放点是第16分钟,缓冲区包含了15到19分钟的帧,并且数据流在第19分钟处将数据馈入缓冲区,如图7-18d所示。
经过另外6分钟之后,缓冲区变满,并且播放点是在第22分钟。播放点不是处于缓冲区的中间点,但是如果必要可以进行这样的整理。