- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
网络电视系统中实现延时续播功能的方案
3.3 关键技术及解决方案
3.3.1 缓冲文件读写操作
流媒体系统运行过程中,随着用户数量的增加,系统对流媒体文件的访问频率也迅速增加。如果采取直接读取文件的方式,很容易造成系统的I/O性能瓶颈。同时,延时续播系统需要不间断地接收Broadcaster组播的RTP数据流,每个直播频道以50-100包/秒的频率发送RTP数据。如果以这个频率对缓冲文件进行写操作,将使系统的I/O性能急剧恶化。
本方案采用了缓冲技术优化文件写入操作。在写入缓冲文件前,先将RTP数据包在内存中整理成一个相对较大的数据块,再一次写入缓冲文件,大大降低了I/O操作频率。对于文件读取操作,则借鉴操作系统虚拟内存管理技术对系统访问的文件内容在内存中做了一级缓冲处理,有效降低了系统的IO访问频率。
读取操作处理流程如图4所示,首先确定缓冲内存块大小(本方案为8K),然后对磁盘文件按照内存块大小进行划分,建立磁盘文件MAP。MAP采用数组作为存储结构,记录对应磁盘文件分块的起始位置、结束位置、分块编号,以及对应内存缓冲块指针等信息。内存缓冲块中设置一个标志记录当前对应磁盘分块的编号。
读取磁盘文件时,按照以下步骤进行操作:
1. 根据读取位置在文件内的偏移计算出对应的分块编号;
2. 查找磁盘文件MAP;
3. 如果MAP项中内存缓冲块指针为空,转第7步;
4. 根据MAP项内存缓冲块指针,访问内存缓冲块;
5. 如果内存缓冲块记录的分块编号不等于该分块编号,转第7步;
6. 从内存缓冲块中读取文件内容;
7. 在内存缓冲块链表中按照最近最少使用规则(LRU)确定淘汰块;
8. 读取磁盘文件块的内容到淘汰块中,修改内存缓冲块文件分块编号;
9. 修改MAP项内存缓冲指针,指向该淘汰块,转第6步。
本方案对系统IO性能的改善体现在两个方面。首先对磁盘文件采取了按"块"读取的方式,实现了虚拟存储管理中的预调策略。而对流媒体文件的访问具有很强的顺序性,预调策略能有效提高内存缓冲区的命中率。用户数量增加时,各用户对文件访问的位置具有一定的分布特性。在某一时刻容易集中在文件的某一区域,比如影片的起始位置往往是访问较频繁的区域。这时,用户对文件访问的位置出现重叠,后访问的用户就可以直接从内存缓冲区中读取文件内容,减少了对磁盘文件的读取操作。
本方案实现中,对用户访问流媒体文件进行计数,根据计数动态调整内存缓冲块的数量。当某文件的访问计数增加时,增加缓冲块数量,反之则减少缓冲块数量。这样能有效利用内存缓冲块。
3.3.2 续播文件定位
通常情况下,流媒体系统中服务器和播放器的系统时间不能保持一致。这对延时续播电视中描述用户需要续播的时间点造成了一定困难。本系统实现中,采用相对时间偏移的概念来描述用户的续播需求。
如果用户在收看直播节目的过程中进行了"暂停"操作,播放器会记录下该时间点。当户用进
这种描述机制计算比较简单,避免了因为服务器和播放器系统时间不一致造成的时刻混乱。
3.3.3 短延时处理
当用户启动延时续播功能时,播放器实际上由接收组播流模式转变为点播模式。很明显,点播操作对服务器造成的性能影响和对网络造成的压力要远大于组播操作。因此在播放器端有必要采取适当的措施避免因用户误操作或者恶意操作造成的短延时续播。
本方案在播放器端设置了最大接收缓冲队列长度(比如60秒)。正常播放的情况下,接收缓冲队列处于较小的长度(比如2秒)。当用户暂停直播节目时,播放器停止读取接收缓冲队列的数据,但不立即停止接收组播数据。这种情况下,接收缓冲队列长度逐渐增大。如果用户在较短的时间间隔后进行了续播操作,播放器不用切换到延时续播模式,而是继续从接收缓冲读取数据。由于没有停止接收组播数据,所以播放器接收缓冲队列中的数据是连续的,只是队列的长度发生了改变,处于比正常播放情况更长的状态。如果用户暂停的时间较长,或者进行了反复的暂停操作,接收缓冲队列达到了最大长度,播放器停止接收组数据,当用户再次续播操作时,转入延时续播模式。
这种处理机制在播放器屏蔽了大多数短延时续播操作,即满足了用户的需求,又有效降低了服务器端和网络的压力。
4 结束语
本方案针对延时续播需求设计,但是对播放器稍作修改还可以实现对直播节目按时点播的功能。由于本方案的实现主要是在流媒体服务器端增加功能模块,对播放器端没有太多的修改,对播放器的运行环境也没有特殊的要求,容易实现对通用播放器的兼容。特别在嵌入式IPTV机顶盒应用中播放器端的运行环境比较苛刻,没有硬盘和大容量内存的支撑,实现延时续播功能只能在服务器做改进,本方案在这种情况下有较大的应用空间。
5 本文作者创新点
? 在服务器端实现直播电视节目的"时移"功能,不受播放器运行环境的限制,适合嵌入式终端应用;
? 在服务器端采用缓冲技术改善文件读写性能,提高服务器并发服务能力;
? 在播放器端采用动态缓冲队列屏蔽了"短延时"操作,提高系统的稳定性。
来源:维库开发网
上一篇:简单网络管理协议的研究与应用
下一篇:激光二极管、稳压二极管检测方法