摘要:該文實現了一個具有個人視頻錄像(PVR)功能的機頂盒。該機頂盒具有邊看邊錄、手動錄像、文件管理等功能。具有較好的商業應用價值。
關鍵詞:PVR;機頂盒
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)11-2748-02
A Design and Implementation of Embedded STB Equipped with PVR
WU Fu-kui1, SU Jun2, CHEN Zheng2
(1.Hubei University for Nationalities, Enshi 445000, China; 2.College of Arts Science of Jianghan University, Enshi 445000, China)
Abstract: Propose an implemented STB equipped with PVR function. The STB can allow people playback and record at the same time; record manually; manage the files, etc, which shows a very wonderful commercial foreground.
Key words: personal video record; set-top-box
引入數字電視機頂盒后電視接收方式改變了。但人們觀看電視的方式并沒有得到改變。節目的播出時間是由電視臺決定的,用戶只能在固定的時間點接收觀看。節目的播出過程也無法進行控制,用戶必須自始至終地守候在屏幕前。另外如果沒有錄制設備,大多數節目只能看一次。人們不滿足于這種被動的信息接收方式,希望能夠自主地隨心所欲地觀看電視節目,但目前的數字電視還缺乏這種交互性。解決這一問題的最終途徑有賴于對傳輸網絡的改造,但由于完全改造現有線路代價太高,一時難以實現, 因此當前需要一種代價不高的過渡方案,帶個人錄像機(personal video recorder,PVR)功能的機頂盒正是在這樣的背景下應運而生的,它通過在機頂盒中加入存儲設備并結合電子節目指南,在用戶端實現了某種程度的交互。實際上在已具備交互功能的寬帶應用中,帶PVR 功能的機頂盒也能發揮其長處,如它能夠存儲視頻點播的節目,便于以后多次觀看。因此實現具有PVR功能的機頂盒成為目前用戶的一個重要需求。
1 PVR機頂盒的設計
本文主要介紹機頂盒中PVR功能的具體實現,不詳細描述整個機頂盒的完整實現方法。
1.1 PVR的整體設計
PVR機頂盒的總體結構如圖1所示,主要分為邊看邊錄自模塊,文件管理子模塊,節目錄制子模塊。
1.2 模塊功能
PVR(personal video recorder)主要用于存儲視頻點播/廣播的節目,便于以后多次觀看。錄制的是 MPEG-2 數字音視頻流,存放在機頂盒掛接的大容量硬盤中。本模塊主要包括以下功能子模塊:
邊看邊錄子模塊:節目數據流一邊在電視屏幕上顯示,一邊灌入硬盤。
手動錄像子模塊:用戶在觀看節目時,根據自己的喜愛自由選擇從節目的一個時間開始錄像,還可以選擇在某個時候結束錄像。這樣可以方便用戶錄下感興趣的小片段,也可以節省硬盤空間。
節目錄制子模塊:實現將服務器傳送的節目流保存在指定文件中。
文件管理子模塊:PVR工作時需要保存大量的數據,存儲系統的性能至關重要。因為文件系統借用移植的linux提供的ext3,所以管理的重點在于對錄制的文件屬性的管理,包括文件名,文件路徑,文件長度管理。
1.3 邊看邊錄子模塊
實現用戶在觀看一個節目同時,將本節目錄制到硬盤中,錄制方法使用FileSink完成,錄像文件名直接使用URL中的節目名稱。流程如圖2所示。
其中播放模塊使用DirectFB的視頻播放接口來播放緩存中數據。文件管理模塊提取URL(即RTSP鏈接請求),根據節目名創建錄像文件,將文件句柄給FileSink使用,實時錄制緩存數據。當錄制數據達到1G時,文件管理模塊關閉此文件,建立”節目名-n”文件,將節目流數據保存到新文件中,經測試沒有問題。
2.4 手動錄像子模塊
邊看邊錄是最基本的錄像方式,優點是實現簡單,文件管理十分方便;缺點是用戶操作單調,大量媒體數據被保存,浪費許多硬盤空間。手動錄像可以讓用戶隨意選擇要錄制的片斷,既方便又節省了硬盤空間。流程如圖3所示。
用戶在觀看節目時,假如想從某一時刻開始錄制節目,按下\"S\"鍵即可。創建監聽線程_beginthread( PvrControl,0,(void *) fileSink)。監聽線程接收到\"S\"響應后,改變FileSink對象中成員sFlag值為1。文件管理模塊創建錄制文件,文件名以當前時間為標準起名(例如2010-01-10 15:20:30),打開錄制開關,即可讀取緩存中數據保存到文件。當用戶結束錄制時,只需按下\"E\"鍵。監聽線程接收到\"E\"響應后,改變FileSink對象中成員sFlag值為0。文件管理模塊關閉錄制文件,sFlag=0時錄制開關關閉。
2.5 文件管理子模塊
文件管理模塊主要負責創建文件以及讀寫,還有一個功能就是避免過大數據寫入一個文件中。使用FileSink類實現。
FileSink類:創建文件以及將RTP凈荷寫入文件。該類的主要方法如下表1所示。
3 結束語
本文實現了一個帶PVR功能的機頂盒。該機頂盒可以實現手動錄像,邊看邊錄等錄像與文件管理功能,豐富了機頂盒功能的多樣性。具有較好的商業前景。
參考文獻:
[1] 方濤.數字電視業務信息及其編碼[M].北京:國防工業出版社,2003.
[2] 劉修文.數字電視有線傳輸技術[M].北京:電子工業出版社,2002.
[3] 鄧沂貴.數字機頂盒原理、應用與維修[M].北京:人民郵電出版社,2005.
[4] 鄭志航.數字電視原理與應用[M].北京:中國廣播電視出版社,2004.
[5] 廖勇,周德松,麻信洛,等.流媒體技術入門與提高[M].北京:國防工業出版社,2006.
[6] 陳洪彬.前沿流媒體實用手冊[M].北京:北京希望電子出版社,2003.