喬飛飛
摘要:隨著如今信息技術(shù)的飛速發(fā)展,人們已經(jīng)進入了網(wǎng)絡(luò)時代,視頻點播的技術(shù)也日益成熟。在現(xiàn)今的多媒體領(lǐng)域中,視頻點播發(fā)展日新月異,視頻點播技術(shù)運用了數(shù)據(jù)庫技術(shù),網(wǎng)絡(luò)技術(shù)以及多媒體。在日常生活中引入視頻點播技術(shù),可以有助于人們生活水平的提高,給人們的生活帶來豐富的體驗以及重大的影響。該文主要設(shè)計了視頻點播系統(tǒng)。系統(tǒng)主要功能涉及了查詢歌曲,播放媒體,查詢酒水賬單等,此外在進行媒體文件播放的過程中還包括了疊加圖片、疊加文字等。
關(guān)鍵詞:視頻點播;查詢歌曲;媒體文件
中圖分類號:TP37 文獻標識碼:A 文章編號:1009-3044(2017)30-0079-03
多媒體技術(shù)的發(fā)展主要是基于計算機以及信息技術(shù),而且與此同時從某種程度上而言,信息技術(shù)也能夠為多媒體發(fā)展提供足夠的進步空間。多媒體技術(shù)正逐漸引起人們廣泛的重視。為了滿足市場需求,目前國內(nèi)的KTV軟件日漸成熟。該類產(chǎn)品的主要特征具體包括以下幾種類型:
單片機版:這種類型的公司主要有深圳藍冰。其中如果歌曲不是原唱的話,會使得用戶有很不好的用戶體驗,目前營業(yè)場所不提供唱歌的,幾乎都是被淘汰了的。
流媒體版:其中這種類型的公司主要有新生代、巴陸等。這些公司除了能夠做網(wǎng)絡(luò)版之外也可以做單片機版,而且還自帶了DVD演唱效果,所以系統(tǒng)實現(xiàn)起來會比較穩(wěn)定,但是由于其分辨率比較低,同時整體演唱效果不如VCD,因此在KTV中很少出現(xiàn)。
局域網(wǎng)版:這種類型有陽光、奧斯卡以及視點等。本文所設(shè)計的KTV點歌系統(tǒng)就是選擇了局域網(wǎng)版。局域網(wǎng)版與單片機版相比,節(jié)省了大量的資源,而且實現(xiàn)起來也很方便,簡捷。
上述的各種類型各自有各自的利弊,但總的來看,目前市場上出現(xiàn)的這些 KTV點歌系統(tǒng)缺少客戶端結(jié)算、響應(yīng)包房等操作。而本文所設(shè)計的系統(tǒng)是在參考了現(xiàn)有的KTV點歌系統(tǒng)基礎(chǔ)上,基于上述客戶端結(jié)算、響應(yīng)包房等操作所進行的設(shè)計與實現(xiàn)。
1 系統(tǒng)功能介紹
1.1 點播歌曲
當客人進入包房中想要唱歌的時候,首先必然先要進行點歌,在點歌時需要先進行歌曲查詢。歌曲查詢的選擇方式包括了很多種,用戶可以自主進行歌曲查詢方式的選擇。點歌系統(tǒng)中的歌曲查詢方式的多種多樣是為了可以滿足不同用戶的各種需求。按照用戶查詢的歌曲,在系統(tǒng)數(shù)據(jù)庫中進行檢索,當成功搜索時,用戶就可以得到系統(tǒng)反饋的搜索結(jié)果,進而能夠進行歌曲的選擇和完成歌曲列表的演唱,并且可以按照歌曲列表進行播放和演唱。
1.2 歌曲播放管理
用戶在演唱歌曲的過程中,可以根據(jù)自己的需求從而選擇性地對演唱歌曲的播放速度、播放音量等進行控制管理,用戶可以進行的操作有快進、快退、加大音量、減少音量、歌曲切換、刪除操作等。系統(tǒng)按照用戶輸入的命令從而完成全部的操作。
1.3 酒水小吃選擇
用戶要想查詢酒水,第一步需要完成的是對查詢信息的輸入,客戶端將按照搜索條件從而進行篩選,最后將客戶所需要的結(jié)果顯示出來。服務(wù)人員將按照系統(tǒng)中的搜索清單,將酒水小吃親自送到下單的客戶手中,并同時需要用戶進行簽字確認接收。當酒水部門確認用戶已經(jīng)簽收后,就可以實時地對數(shù)據(jù)庫的數(shù)據(jù)進行更改。
2 數(shù)據(jù)庫設(shè)計
在數(shù)據(jù)庫結(jié)構(gòu)的整個設(shè)計的過程中,需要使得用戶的大部分需求都能夠得到滿足,而且還需要盡量避免出現(xiàn)數(shù)據(jù)多余的情況產(chǎn)生,按照點歌系統(tǒng)特征,系統(tǒng)的規(guī)律主要涉及到了如下:
明星與歌曲的對應(yīng)關(guān)系是一對多,歌曲與歌曲類型也是多對一的關(guān)系,不同的歌曲,歌曲類型都對應(yīng)著唯一的編號,編號對歌曲進行唯一地標識。角色與用戶之間是一對多的關(guān)系。歌星信息實體中的字段包括了歌星編號,歌星姓名、歌星性別、歌星年齡、歌星國籍等字段。歌曲信息實體包括了歌曲編號、歌曲名、歌曲路徑、歌曲類型、發(fā)行時間、圖片地址等。用戶信息實體字段包括了用戶名、用戶密碼、用戶編號等。
點歌系統(tǒng)中包括的數(shù)據(jù)庫表主要有:用戶表、歌曲信息表以及明星信息表。在很多時候,數(shù)據(jù)庫中的各個表之間相互都是有關(guān)系的,這種關(guān)系叫做關(guān)聯(lián)。比如歌曲信息表里面的外鍵歌星編號與歌星信息表中主鍵歌星編號就是一種關(guān)聯(lián)。當數(shù)據(jù)庫里面的信息無法使得依賴關(guān)系繼續(xù)保持的話,那么就會破壞數(shù)據(jù)的一致性原則。
3 客戶端軟件總體設(shè)計
通過對國內(nèi)市場KTV點歌軟件的各種分析,并且結(jié)合對用戶需求的分析,從而完成了客戶端軟件界面的設(shè)計,總體設(shè)計結(jié)構(gòu)圖如圖1所示。
圖1 軟件總體設(shè)計圖
客戶端程序選擇Visual C++作為設(shè)計系統(tǒng)的工具。選擇Visual C++的原因是考慮到了KTV點歌系統(tǒng)需要運用到DirectShow。相比于Delphi以及Visual Basic工具來說,Visual C++作為工具能夠?qū)崿F(xiàn)的是對媒體文件進行加密處理的技術(shù),而且在整個的解密過程中選擇了多種不同的算法。Visual Basic中需要引入Filter Graph才能夠完成文件的播放。這個時候選擇Visual Basic會存在很多方面的約束。
3.1 設(shè)計播放模塊
播放歌曲模塊的實現(xiàn)包括了暫停,快進,快退以及暫停,切換歌曲,調(diào)節(jié)音量等操作。除此之外,還能夠按照點歌者的個人愛好選擇性地顯示歌詞以及其他不同動態(tài)效果。作為一種應(yīng)用的軟件就需要有可擴展性,此外系統(tǒng)還需要有很好的復(fù)用性。例如,如果在硬件解壓卡的情況下,可以具備質(zhì)量高的圖像解碼,這個時候僅僅需要修改模塊里面解碼處的代碼就可以完成操作,然而希望最好其他部分可以保留原樣,無須修改。那么此時代碼復(fù)用性就起到了很大的作用。另外,Brower程序可以對解碼部分的模塊進行調(diào)用處理。立足于軟件維護性而言,致力于增強模塊中所有部分的禍合度,做到各個模塊之間是互不影響的。
媒體播放文件中,繁瑣的函數(shù)會封裝在某一個模塊里面,從而會提供完整的業(yè)務(wù)邏輯接口。對比復(fù)雜的函數(shù)接口,選擇統(tǒng)一的模塊在使用起來會更加地便捷。
3.2 播放模塊接口及實現(xiàn)
分析系統(tǒng)后,首先是對接口的確定,按照之前的描述,接口設(shè)計選擇Facade的主要原因是為了確保接口的易用性,同時也要給其他操作預(yù)留調(diào)用的接口。
3.3 疊加歌詞
播放歌曲模塊中為了滿足用戶的需求,需要在播放歌曲的同時,也要將歌詞字幕顯示在視頻畫面中,從而可以顯示出重要的信息。另外一方面,也要顯示出動畫Logo。要想實現(xiàn)疊加歌詞以及動畫效果就需要增加Filter,同時在FilterGraph里面加入Filter。Filter的設(shè)計應(yīng)該要考慮到以下幾個方面:
首先需要確保Filter單一化的功能,保證功能簡單并且容易實現(xiàn)和調(diào)試。KTV點歌系統(tǒng)的動畫filter與字幕filter是相互分開的,所有的Filter都只有單一的功能。
其次是Filter工作模式的確定。通過FilterGraph位置就能夠?qū)ilter模式進行確定,其中模式包括了推與拉模式。因為Filter是緊接著DecoderFilter的,所以在視頻流的解密操作中,拉數(shù)據(jù)將無法實現(xiàn),因此選擇的模式是推模式。
最后就是Filter父類型的確定。Filter的設(shè)計是在基于合適的父類基礎(chǔ)上完成filter的自定義。因為疊加歌詞的整個過程中會存在大量輸入輸出的操作,樣本數(shù)據(jù)不會有很大的變化,在這個模塊中,F(xiàn)ilter充當?shù)慕巧褪翘幚砩霞墧?shù)據(jù),接著把數(shù)據(jù)給下級,因此整個設(shè)計過程中選擇的父類是TranslnPlace Filter。
Filter輸入輸出數(shù)據(jù)主要是借用了Pin,Pin是一種數(shù)據(jù)流動接口。Pin相互之間的連接需要進行對比驗證。
Filter設(shè)計過程中要考慮到Pin數(shù)量的輸入輸出以及媒體類型。其中系統(tǒng)中Pin輸入支持的類型主要有RGB32、RGB565等等。其中Pin輸出類型和輸入的類型是一致的。
接口定義:Filter借用接口從而完成與外部的交互。外部調(diào)用者借助接口從而得到Filter相關(guān)的屬性,而且另外一方面還能夠?qū)ilter行為進行很好地控制。疊加字幕的接口涉及的內(nèi)容有字體屬性、疊加位置、字符開始結(jié)束時間以及疊加效果。
4 系統(tǒng)工具設(shè)計與實現(xiàn)
4.1 錄入歌曲信息
根據(jù)客戶的需求,選擇的數(shù)據(jù)庫是Access,該數(shù)據(jù)庫主要是保存歌曲信息。歌詞信息的輸入是通過小型軟件實現(xiàn)的。歌曲錄入軟件一定要確保軟件的穩(wěn)定性以及數(shù)據(jù)的可靠性。根據(jù)數(shù)據(jù)之間不同的邏輯關(guān)系,從而決定歌曲順序以及輸入的內(nèi)容。接著就是根據(jù)數(shù)據(jù)間相互的邏輯關(guān)系,從而實現(xiàn)歌曲隨機生成以及歌曲首字母自動生成,本文選擇的是Delphi7.0工具。
4.2 歌曲信息查詢
查詢歌曲以及酒水信息主要是與數(shù)據(jù)庫之間的聯(lián)系,數(shù)據(jù)庫的訪問十分簡單,能夠選擇的方法有ADO、ODBC等,其中當系統(tǒng)需求發(fā)生改變后,對數(shù)據(jù)的查詢就會比較繁瑣,因此需要盡可能地防止這種情況的發(fā)生,改進的方法是添加中間層到數(shù)據(jù)庫與程序之間,要想進行數(shù)據(jù)庫的修改,那么只能選擇該中間層。
設(shè)計數(shù)據(jù)庫功能的模式主要包括了O-R Mapping與DAO模式,其中DAO模式主要是操作數(shù)據(jù),而與此同時O-R Mapping主要是完成對象與對象關(guān)系之間的映射。歌曲查詢主要是進行文字以及數(shù)據(jù)查詢,業(yè)務(wù)邏輯簡單,因此選擇O-R Mapping模式就能夠達到要求。針對表示層的查詢操作,可以將功能層的內(nèi)容進行sql語句的轉(zhuǎn)換,從而得出一個Recordset集,表示層要想接收到查詢結(jié)果,那么就需要定義類,同時對類進行聲明處理。
其中,歌曲信息查詢鏈表定義如下:
Typedef struct tag_Songs_Information
{CString songspath;
CString songsName;
CString songsStarName;
Int Languages;
Int Server;
Int Origin;
Int Songsid;
Int songsCount;
}Songs_Information;
4.3 調(diào)試歌曲程序
考慮到歌曲信息與數(shù)據(jù)庫信息存在很大的差別,因此用引入一個調(diào)試播放的程序。該程序中可以將數(shù)據(jù)庫中該歌曲的信息完全顯示出來,此時調(diào)試人員能夠按照歌曲相應(yīng)的情況從而對數(shù)據(jù)庫中的數(shù)據(jù)進行更改。除此之外,該程序還可以支持歌曲選擇操作。本文在播放程序基礎(chǔ)上,添加了歌曲編輯操作,用戶修改歌曲后,數(shù)據(jù)庫依然可以保存該信息。設(shè)計界面圖如圖2所示。
4.4 歌曲文件優(yōu)化
本文設(shè)計的系統(tǒng)歌曲十分多,而且對于服務(wù)器的性能以及網(wǎng)絡(luò)等方面的各種約束,本文針對這一現(xiàn)象給出了優(yōu)化方法。簡而言之,實現(xiàn)方法就是對現(xiàn)有的數(shù)據(jù)進行統(tǒng)計分析,在本地保存已有的歌曲,剩余的部分放到服務(wù)器中,服務(wù)器的硬盤中對應(yīng)存放的是點唱數(shù)量相同的歌曲??紤]到服務(wù)器以及網(wǎng)絡(luò)因素,設(shè)計了小程序,在實現(xiàn)過程中根據(jù)歌曲的排名從而將歌曲路徑導(dǎo)出來,然后把路徑保存到指定的位置上。其中CopyFiles的參數(shù)包含了源地址以及目錄地址。這種設(shè)計效果可以提高硬盤訪問的性能,響應(yīng)速度也大大增強了,穩(wěn)定性也得到了相應(yīng)的提高。
5 結(jié)束語
隨著社會的發(fā)展以及人們生活水平的提高,所面臨的社會壓力也逐漸增加,因此閑暇之余,人們希望通過娛樂的方式放松身心,希望有一個空間可以疏解情緒,并且可以為生活添加更多的樂趣。由于KTV點歌系統(tǒng)的成本比較低,因此去KTV唱歌成為了一種社會趨勢,人們愿意為此進行消費,而且在KTV唱歌可以讓人得到一個很好的情感緩解。通過調(diào)查發(fā)現(xiàn),KTV唱歌是結(jié)合系統(tǒng)可行性、經(jīng)濟可行性等進行開發(fā)的。該系統(tǒng)主要是實現(xiàn)歌曲查詢、點歌、酒水下單等功能。
在整個分析設(shè)計的過程中,主要立足于設(shè)計模式,考慮到系統(tǒng)可用性、穩(wěn)定性以及代碼復(fù)用性。因此選擇了Facade設(shè)計模式。在模塊中封裝差異,從而方便其他模塊調(diào)用接口。
參考文獻:
[1] 周俊平. 基于C/S模式的KTV點歌系統(tǒng)的研究[J]. 電腦知識與技術(shù):學(xué)術(shù)交流, 2016, 12(3):95-97.
[2] 陳章斌. 基于嵌入式Linux平臺的KTV點歌系統(tǒng)機頂盒的設(shè)計[J]. 重慶高教研究, 2015, 30(1):67-70.
[3] 張何俊彥. 基于NiosⅡ的語音識別與AC3音頻解碼系統(tǒng)設(shè)計[D]. 成都:電子科技大學(xué), 2016.
[4] 程杰鋒, 程杰標, 宋振鵬,等. 基于手機和WIFI網(wǎng)絡(luò)的多功能KTV點歌分享系統(tǒng)及方法:, CN104038530A[P]. 2016.
[5] 林和平. 卡拉OK點歌系統(tǒng)簡介[J]. 電腦開發(fā)與應(yīng)用, 2015(4):7.endprint