如上所示,EPG信息主要包含了每个节目所对应的节目名、开始时间、持续时长以及相邻事件的指针,当然,事件信息还包括它所对应的频道信息三要素(transportid,network id,service id)。
EPG的信息量非常大,并且经常更新,但是由于系统搜索一次EPG信息周期长达8~10s,所以除了开机之后的第一次获取外,当用户按键浏览EPG时,只有当前节目已经过期的情形下,系统才实时地分析获取,并将其缓存至系统内存,其余情形下系统读取缓存数据以大幅度提高响应速度。由于EPG的信息时效性很强,因此在退出系统时无需保存。
用户通过UI来实现与EPG之间的交互,在UI部分,向用户提供了非常友好的EPG菜单界面,实现了节目的按频道分类以及按日期分类,用户通过这些菜单界面,可以方便地浏览节目中近期播放的事件的信息,选择自己喜欢的节目来播放,并且可以设置自动录制指定某个频道的某个时间段的节目。
3.4 预录节目管理
前文已经提到了使用EPG信息与时钟板来进行电视节目的预约录制。用户在浏览EPG列表时选中想要录制的节目,按下预约录制按钮,系统自动将预录信息写入配置文件,并存储至硬盘,文件条目格式如下:
其中条目按照开始时间的先后顺序排列,开始时间与结束时间均以BCD码的形式保存以节省存储空间,同时也可以与通用的struct tm格式方便地进行转换。用户可以随时进入预录条目管理界面删除不需要的条目,也可以再次进入EPG界面选择并添加新条目,系统将根据已有条目情况判断是否有时间冲突,若有则无法预录,若无则选择正确的位置插入条目。系统在开机时自动检测硬盘上是否存在配置文件,若存在,则读取文件第一个没有过期的条目,取出节目开始时间,与从时钟板获得的系统当前时间进行循环比较,一旦到点,系统将停止当前音、视频的播放,并且跳转至预约节目的录制。通过配置文件的使用,系统实现了电视节目的一键录制,录制信息,包括节目名、频道名以及录制开始时间,均以文件名的形式记录,方便用户对于录制文件的查找与分类管理。由于配置文件被写入硬盘,所以除了极端特殊情况,比如在写配置文件时意外断电,通常情形下在系统断电后文件仍然存在,从而实现了预录节目的断电续录功能。
4 结束语
本文开发的PVR系统已经产品化,并随着地面高清信号的开播同步大批量投放市场。由于采用成熟的uClinux操作系统、sigma FM8622L芯片组以及配套的SDK进行二次开发,系统表现稳定,在电视信号质量良好的情况下,录像文件码率平稳,播放效果流畅,长时问录制与播放均不会出现死机等系统异常状况,配合液晶高清电视和家庭影院,完全体现了分辨率高达1920×1080的高质量视频以及高保真音频所带来的震撼感受,并且通过优化的UI设计,使得EPG无缝嵌入电视播放流程,用户查看节目指南、录制当前节目以及预录节目均可一键实现,相比PC平台同类型产品而言,具有性价比高、系统稳定、防病毒木马侵袭、以及使用专用音、视频解码芯片,高清解码能力更出色等优点。当前系统仍存在一些缺点,如天线对信号方位敏感,雨雪天气收看效果不佳,以及录制高清信号时由于码率较高,占用大量系统缓存,从而妨碍其他功能(比如BT下载)的并发执行。下一步工作是设法在硬件上提高天线性能,以及优化代码,减少系统开销,确保各项功能并发执行互不影响。