+ 李愛卿 國家新聞出版廣電總局四九一臺
基于WiFi的多媒體視訊發布系統設計與實現
+ 李愛卿國家新聞出版廣電總局四九一臺
本文以當下成熟的WiFi熱點技術平臺為基礎,以多媒體服務信息展示為基本功能,整合了即時通訊、媒體資料管理、嵌入式媒體播放、實時信息發布等應用,提供一整套經濟可行的視訊發布技術解決方案,并以客戶端即時通訊為例,深入剖析了設計實現過程。
多媒體、發布、即時通訊
前言:隨著近幾年來WLAN技術領域飛速發展,無線局域網技術從最初的802.11a發展至802.11g/n,目前最成熟的技術是802.11n,傳輸速率由802.11a及802.11g提供的54Mbps、108Mbps,提高達350Mbps甚至高達475Mbps,同時發展的802.11ac采用5G頻段,可實現最高達1Gbps的傳輸速率。
近年多媒體應用的普及,以WLAN技術為基礎的WiFi熱點平臺覆蓋范圍逐步加大,網絡化、智能化是多媒體視訊發布的發展趨勢,對于終端部署地理區域分散、規模較大的實務應用來說,由于成本的因素而使得實施、管理與維護相當困難,已成為技術可行性與經濟可行性之間平衡取舍的挑戰。筆者認為,系統建設時設計人員必須對實際需求有深刻了解與領悟,在保障可靠實施運行前提下,架構設計還需不失靈活性、擴展性。文中設計思路,均來源于計算機與通訊技術領域工作實踐。
早期的BBS電子社區多媒體發布系統的應用多是以播放廣告、顯示宣傳信息功能為主,由于國內網絡通信資費較高,基于對成本因素的考慮,眾多的企業與單位紛紛采用功能單一、技術相對落后的單機版方案,功能只是單向信息顯示與廣告呈現。當下人們對信息依賴程度的要求越來越高,希望多媒體廣告發布系統功能多樣化,能在公共場所能及時的提供所需的信息服務,將更為豐富的信息快速反饋給系統用戶。那么筆者認為,系統的多樣性將顯得尤為重要,這些媒體信息需要能夠準確、及時的發布到終端設備進行播放與展示。新一代的多媒體視訊發布需求將更加側重提供實時信息顯示、交互查詢等新功能,并能基于WIFI、局域網進行登錄。筆者結合對通訊信息技術工作實踐,在本文設計中擬劃分如下:

如圖1所示,本文系統設計主要劃分為前臺系統和后臺系統兩大功能,而在前臺系統中,包含電子社區論壇和多媒體控制系統兩個子系統,用以實現與用戶的主要交互、用戶界面等,實現與用戶的實時友好交互,完成相關數據展示及用戶數據收集等功能,而后臺系統主要包含電子社區服務器,實現相關的邏輯控制及數據存儲,是整個系統的邏輯控制中心,完成相關數據的處理和持久化存儲,從而實現數據永久保存、便于查詢等相關功能。
多媒體視訊發布系統擬采用基于C/S模式的三層架構來設計如所示:通訊中采用加密方式,保證數據傳輸安全、完整,并保證與主服務器中數據庫數據的實時一致性。開發模式是C/S開發模式這種工作模式主要用于系統管理方面,主要是對多媒體處理的管理。系統開發平臺采用微軟公司.NET開發平臺,。開發語言采用C#與C++完成。前端頁面和管理部分采用C#語言開發,使開發效率最高。多媒體處理部分采用C++開發,使多媒體處理效率最高。網頁和管理部分采用C#語言開發。
系統主要包含客戶端和服務器端兩個部分的功能,其中:
(1)電子社區多媒體控制系統客戶端:

圖2 多媒體發布系統架構圖
電子社區多媒體控制系統的客戶端功能主要包含音頻播放、視頻播放、音視頻格式轉換、音軌壓縮及錄音等主要功能,實現電子社區在客戶端的所有音視頻的播放、格式轉換以及音視頻的音軌壓縮等功能,同時實現音頻文件的錄音功能,從而
如圖2所示,多媒體發布系統設計的主要架構包含數據庫、服務器及客戶端三個功能模塊,其中:① 數據層:用來完成系統中數據的管理,提供數據信息,擬采用Microsoft SQL Server作為數據庫管理系統,提供數據庫存取等服務。 ② 功能層:提供了服務組件層與底層數據的交換,完成系統業務邏輯的實現,實現。③表示層:由表現層和控制層組成,提供用戶與系統進行交互的界面,實現與用戶的交互、數據展示及相關數據收集等功能。
系統以計算機技術核心,根據流程要求,數據庫設計即要保證降低對網絡環境的要求,又要保證數據同步傳輸的安全性、一致性、方便性。數據庫系統采用微軟公司SQL Server 2008數據庫系統,SQL Server 2010數據庫為核心主數據庫,運行于系統主服務器上。系統通過多媒體處理模塊完成數據的上傳與下載同步工作,實現全方位的本地客戶端功能。其中:
① 音頻播放:可以實現對計算機多媒體硬件(如聲卡、麥克風等)作出測試,并且可以進行錄音、放音、音頻文件的打開和保存。

② 視頻播放:可以播放常見格式的視頻文件。
③ 格式轉換:可以實現對音頻文件進行格式轉換,尤其是將.wav格式轉換為.mp3格式。
④ 音軌壓縮:可以實現在對音軌質量有一定損失的情況下,對音頻文件進行壓縮,節省系統空間。
(2) 電子社區多媒體控制系統服務器端
電子社區多媒體控制系統的服務器端主要包含音視頻在內的多媒體的上傳下載以及用戶之間的即時通訊等功能,從而實現整個系統的服務器端所有的功能,實現整個系統的正常邏輯[14]。詳情如下所示:
① 網絡瀏覽器:具有常規瀏覽器的基本功能,將電子社區論壇設為首頁。
② FTP傳輸:在FTP服務具備和服務器支持的條件下,給出連接,實現FTP傳輸。
③ 即時通訊:電子社區內部聲音即時通訊功能。

多媒體發布系統客戶模塊功能結構展示如下;
如圖3所示,客戶端功能主要包含音頻播放、視頻播放、音視頻格式轉換、音軌壓縮及錄音等主要功能,實現電子社區在客戶端的所有音視頻的播放、格式轉換以及音視頻的音軌壓縮等功能,同時實現音頻文件的錄音功能,從而實現全方位的本地客戶端功能。
如圖4所示,服務器端主要包含音視頻在內的多媒體的上傳下載以及用戶之間的即時通訊等功能,從而實現整個系統的服務器端所有的功能,實現整個系統的正常邏輯。
本文設計的多媒體發布系統,整合了先進的通訊技術與計算機信息技術,搭建環境基于單機平臺與企業級局域網,屬于有一定網絡應用功能的多媒體控制系統。在有網絡平臺和服務器支持的情況下,具有FTP上傳下載和即時通訊功能。系統數據庫、文件服務器等數據源采用master-slave的三份冗余備份,其中一臺master服務器,兩臺slave服務器,當其中某一數據庫或者服務器宕機時,另外兩臺中的某一臺通過選舉算法自動接管服務;當出現數據災難時,可對比三臺中的數據情況,以災備算法計算出其中數據壞掉的那臺數據庫服務器或者文件服務器,然后通過和正常的服務器上的數據進行對比,快速恢復數據,保證數據的安全性和完整性。
硬件環境配置采用Internet公司I7系列級別處理器,DDR38G內存,6TB以上硬盤空間。服務器端與系統終端為Windows 7 操作系統。通訊協議采用Internet上的標準協議--TCP/IP協議。通訊協議采用Internet上的標準協議TCP/IP協議。系統擬采用的C/S工作模式是建立在TCP/IP通訊協議基礎上,包括專用通訊軟件的開發也以TCP/IP協議為基礎。
通訊安全技術方面,在開發中采用多級權限管理,只有合法用戶才能訪問指定的資源與功能。通訊軟件采用數據壓縮與MD5軟件加密技術措施。保證數據通訊過程中的數據完整、防篡改與被數據竊取。
數據庫實現:結合系統應用環境,筆者構建出較為穩定及優化的數據庫模式,從而來創建數據庫應用系統,以滿足多元的應用需求,能夠快速有效地儲存數據。多媒體發布系統的數據庫邏輯設計主要圍繞著用戶、權限、視頻、錄音及即時對話等實體來進行,經過數據庫分析建模,最終設計出15張數據庫表。其中系統內各數據之間的實體屬性關系圖如圖5所示。
客戶端即時通訊實現:用戶可通過手機、平板電腦由WIFI接入局域網客戶端,點擊客戶端圖標,運行程序,進行媒體信息的瀏覽與即時通訊。進入客戶端登錄界面,用戶輸入登陸名和密碼后,單擊登陸進入手機客戶端。進入詳細信息頁面,顯示內容:主題、發件人、類型、發送時間、是否發送短信、內容,“回復”、“刪除”和“返回”按鈕;“刪除”時提示“您是否確定刪除該信息”,提供“確定”“取消”按鈕,確定后保存到廢件箱中,取消則關閉彈出窗口。點擊“回復”進入回復頁面,信息回復頁面所示,單擊“發送”直接發送信息,“保存”后信息保存到草稿箱,“返回”則退回到收信息頁面。

圖5 系統數據庫實體屬性關系圖
即時通訊實現代碼如下:
public String toAddCourseInfor(HttpServletR equest request,Model model) {
User user=(User)request.getSession(). getAttribute("loginUser");
String couSchCode = user.getSchoolCode();

String recordsCount = subjectBlogic.querySubjectInforCount(couSchCode);
PagingOperation paging = new PagingOperation(curPage, recordsCount, beginPos,"10",pagingFlag); paging.execute();List list = null;
SubjectManagerVo vo = new SubjectManagerVo();
vo.setBeginPos(Integer.parseInt(paging.getBeginPos()));
vo.setRecords(Integer.parseInt(recordsCount));
vo.setSchool(couSchCode); list = subjectBlogic.querySubjectInfor(vo);
if (list.size() == 0) {model.addAttribute("subjectInfor", null);
} else {model.addAttribute("subjectInfor", list);
}}
視頻發布播放實現:運行AppWizard創建一個單文檔應用程序。 添加成員變量,右鍵單擊AVI Classes下的VAVIView,在彈出菜單中選擇Add Member Variable…項。在VariableType中填入HWND,在Variable Name中添入m_hwndMC,單擊OK按鈕。
初始化剛添加的成員變量,定位到視圖類的構造函數CAVIView::CAVIView(),添加代碼如下:

作用:用它調用函數產生播放器窗口函數,用來播放視頻文件
添加一個新的菜單項,在“打開”和“保存”菜單項之間加入一個新的菜單項“打開AVI文件”,其ID為ID_AVI,Caption為“打開AVI文件”。
添加新菜單項的消息響應函數,利用Class Wizard生成“打開AVI文件”菜單ID_AVI的COMMAND消息的響應函數CAVIView::OnAvi().并定位到該函數,在其中加入以下代碼:

dlg(TRUE,”avi”,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,”AVI文件(*.avi)|*.avi||”);作用是創建一個文件列表,選擇要打開的.avi文件。

這條函數的作用是判斷如果是NULL,說明現在已經存在一個正在播放的視頻文件,所以就新建一個;如果是一個文件的路徑,說明目前沒有正在播放的視頻文件,就打開該文件的路徑文件。
函M_hwndMCI=MCIWndCreate(m_hWnd,AfxGetInstanceHandle(),0,filename)的作用是打開選擇文件名的.avi文件。
編輯StdAfx.h文件,在StdAfx.h文件中的最后一行#endif語句之前加入以下代碼:

作用是添加庫文件,讓程序可以識別代碼,否則前邊的所有工作都白費了,而且可以調用vfw32.lib實現現成的基本多媒體播放發布功能完畢。
結語、
該方案可應用于大型小區或企事業單位內部多媒體信息發布,由于篇幅所限,筆者僅就系統設計思路和架構進行描述,并精選了系統設計開發的關鍵思路與技術進行剖析。本文權作拋磚引玉,供廣大通訊技術領域同仁共同探討研究。
(1) 樊昌信.現代通訊技術.人民郵電出版社.2009-10-1
(2)黃榮懷.多媒體系統與網站管理.北京師范大學.2014-10-17
李愛卿 國家新聞出版廣電總局四九一臺高級工程師,長期從事廣播電視傳輸工作,聯系方式:13691097941。