近年来KTV的盛行.doc

上传人:汽*** 文档编号:550545394 上传时间:2023-10-18 格式:DOC 页数:14 大小:506.51KB
返回 下载 相关 举报
近年来KTV的盛行.doc_第1页
第1页 / 共14页
近年来KTV的盛行.doc_第2页
第2页 / 共14页
近年来KTV的盛行.doc_第3页
第3页 / 共14页
近年来KTV的盛行.doc_第4页
第4页 / 共14页
近年来KTV的盛行.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《近年来KTV的盛行.doc》由会员分享,可在线阅读,更多相关《近年来KTV的盛行.doc(14页珍藏版)》请在金锄头文库上搜索。

1、NetJukeBoxThe Final Project of Distributed Information SystemTeam MembersR90725041許巍瀚R90725051吳沛璁R91725014蔡明憲Introduction近年來KTV的盛行,使得KTV成為大眾重要休閒活動之一,但卻常常為了訂KTV包廂,而花費大把時間在等待上,或者為了昂貴的包廂費而裹足不前。到底有沒有能夠不出門,就能享受去錢櫃、好樂迪歡唱的方法?因此我們有個想法:如果能透過網路就能讓使用者在家唱歌的服務,不用出門被風吹、雨打、日晒、人擠,輕輕鬆鬆就在線上和好友一起盡情歡唱該有多好呢?於是經過我們小組團隊的討

2、論之下,全新的理念:NetJukeBox就如此誕生了! NetJukeBox主要的功能服務是虛擬KTV包廂、和線上即時點歌系統。其最主要的功能是讓使用者能在虛擬包廂中連線對唱,並且有即時語音和朋友在線上聊天的功能。只要使用者自備喇叭、麥克風,接上線就可以大唱特唱,在虛擬的世界中交流彼此的聲音和真實的情感,提供e世代一個最新鮮的KTV玩法!Goals and Features我們想要建置一個虛擬歌唱KTV系統NetJukebox,讓處於遠端的使用者不受空間限制,得以透過網路互相溝通,此一歌唱系統的主要功能包括傳遞訊息、歌手/歌曲模糊查詢、新進歌曲查詢、以及即時麥克風分送語音給其它包廂成員。主要功

3、能如下:Chat Roomo 顯示成員名單。o 成員之間互相傳遞訊息。KTV on Demando 模糊查詢歌手點歌。o 模糊查詢歌曲名稱點歌。o 新進歌曲點歌o 歌手姓氏筆劃點歌Singing On-Lineo 成員透過麥克風傳送即時歌聲。o 成員皆有歌唱機會Media Streamingo 麥克風即時串流。o 點播KTV歌曲即時串流。o 廣告MTV歌曲即時串流。Technologieso Middleware:Java J2SDK 1.4.1 + Java RMIo Media Streaming:JMF 2.1.1co Database:Microsoft SQL-Server + JD

4、BCo Other: Jarkata ANT + JBuilder7Architecture & Design本系統為4-tier架構,主要分成Reception、NetJukeJoint、NetJukeServer以及NetJukePlayer,分別簡介如下:NetJukePlayero NetJukePlayer:為客戶端的主程式,包含主要的member reference、圖形介面的主體以及認證的工作。程式開始會去尋找Reception,以檢視目前有哪些包廂正在執行,使用者可以選擇一包廂加入成為這個包廂的成員、或者自己建立一虛擬包廂,成為這個包廂的Leader。o Leader:每個包廂

5、都會有一個Leader,Leader負責的工作有以下幾項:o 向NetJukeServer發出Streaming的要求。o 發放號碼牌。o 包廂有新的NetJukePlayer加入的時候,負責告知目前包廂內的狀態。包括包廂內成員、目前點播歌曲清單等。o 歌曲查詢:NetJukePlayer可以向NetJukeJoint查詢可獲得的歌曲清單,查詢方式包括歌手名稱查詢、歌曲名稱查詢、新歌查詢等。o 聊天室:NetJukePlayer之間可以透過聊天室互相傳遞訊息。o 歌曲點播:每個包廂內的成員都可以點播歌曲,為了讓所有成員的點播清單達到一致性,點播歌曲的時候也跟聊天室採用一樣的方式達成Total

6、Ordering、Reliable Multicast。o 麥克風:當歌曲播放時,點播該歌曲的使用者可以用麥克風將聲音傳送給包廂內的所有成員。ReceptionReception是整個系統的入口,當使用者連上系統的時候,會由Reception進行身份、密碼的驗證,接著視使用者的地理位置將使用者導向比較近的NetJukeJoint。NetJukeJointNetJukeJoint主要負責查歌的功能,並維護使用者的資料,包廂的資料以及目前這個區域所有MTV資料。當使用者查歌時,會將所有的查歌要求放進一個Queue中,NetJukeJoint中會有數個Thread從Queue取出使用者要求,並進行查

7、詢,然後將查詢結果回傳給原使用者。NetJukeServerNetJukeServer是實際放置MTV檔案的Server,當NetJukeServer開啟時,會指定一個NetJukeJoint,並向其註冊、登記所擁有的MTV,提供Streaming的服務給該NetJukeJoint。FeatureFriendly GUIGUI蠻漂亮的。Total Ordering為了達成Total Ordering,每個成員發送訊息或是點播歌曲之前都會先向包廂的Leader要求一個號碼牌,發送訊息和點播歌曲所用的號碼牌是不同的。發送訊息與點播歌曲只是包廂內所有成員的事情,與其他任一Server無關,所以即使S

8、erver掛掉了,包廂內成員之間依然可以傳遞訊息。當使用者收到訊息的時候,會先放到一個信箱裡面,信箱裡面記錄了目前所見訊息中最大的號碼,以及還不能顯示出來的所有訊息。接著開啟一個Thread去檢查下一個號碼的訊息是不是來了,如果已經接收到了,就將所有可以發佈的訊息顯示出來。Reliable Multicast包廂成員收到其他成員的聊天訊息或是點播訊息的時候,如果這個訊息從未見過,那麼便會向包廂內的所有成員傳送一次,然後才放進信箱。Connection PoolServer在處理使用者要求的時候,如果只用一個Thread來處理所有的要求,勢必效率會很差。如果每個使用者都給予一個Thread去處理

9、,當使用者要求太多的時候,將會造成Server過大的負擔。本系統中處理使用者要求是採用Connection Pool的方式。當使用者送出要求的時候,會先直接將要求放在Server端的Request Pool。Server端另外開啟了幾個Thread從Request Pool中把使用者要求抓出來處理,處理完畢以後再將結果回傳給原要求的使用者。這樣的方式可以讓系統處理要求不會過於沒有效率,而且也不會因為要求太多使得Server負荷過大。Highly Configurable在system.properties、joint.properties、server.properties、player.pr

10、operties中有許多選項可供設定。Real-Time Media Streaming傳統上播放連續性媒體資料,例如視訊及音訊,大都由使用者下載檔案然後再播放的方式觀看,即使是使用Modem撥接的網路上,藉由此方式播放連續性媒體資料所輸出之品質是值得信賴的。然而這樣的方式,會讓使用者等待很長的一段時間才能下載檔案完畢。一個普通的連續性媒體檔案往往比一個文字檔或是執行檔大的多。例如一部一百分鐘MPEG-1格式的檔案,就可能需要600MB的硬碟容量,且下載到硬碟可能會有版權的問題。為了克服上述提及的問題及爭議,一個有別以往的不同方法,發展藉由網路傳送數位化的壓縮之連續性媒體資料,也就是Strea

11、ming Media。Streaming Media利用切割媒體資料流及使用端buffering的技術,讓使用者不必接收完整的檔案前,就可先行在其桌上電腦上播放連續性媒體影音檔案。切割媒體資料流的技術是將連續性媒體資料可以切成眾多小片段,然後利用網路傳到使用端的伺服器,再像拼圖一般,一片片拼起來,用戶端收到一邏輯單位(可能會有多個封包)就可以立即播放。這個方式需要較高的頻寬,但相對地可減少大量的硬碟容量。再者,因為使用者沒有將檔案完全的拷貝至其硬碟,所以版權的問題也較少。使用端buffering的技術可以消除目前best effort 的Internet在傳輸時的delay jitter。其主

12、要的作法是在使用者端的電腦上創造一個緩衝區,於播放前預先下載一段資料作為緩衝,於網路實際連線速度小於播放所耗用資料的速度時,播放程式就會取用這一小段緩衝區內的資料,避免播放的中斷,也使得播放品質得以維持。NetJukebox利用JMF所提供的API實作了Media Streaming的功能,讓使用者可以不必漫長等待,隨時歡唱。NetJukebox和JMF的關係如如下圖所示:NetJukePlayer Failure Control每個使用者端都會有一個Thread定期去偵測包廂內成員的狀態,當發現有成員掛掉的時候,便採取適當的措施。由於包廂內有一個唯一的Leader存在,Leader的身份也異

13、於一般的包廂成員,所以下面分成兩項來說明。發現一般成員掛掉時,只是單純的將該成員由本地端的群組名單上移除。當Leader掛掉時,發現的人會發起Leader Election,找到包廂內還Active的成員中ID最小的來當Leader。這裡所用到的ID是包廂內唯一的,當使用者開啟新包廂時,Reception會設定該使用者的ID。若是加入現有包廂,則會由包廂的Leader來指定新成員的ID。除了設定新的Leader以外,新的Leader還需要從成員中蒐集訊息與點播的號碼牌,看看目前最大的號碼為何,這樣接下來新Leader所發放的號碼牌才會正確。NetJukeServer Failure Contr

14、olNetJukeServer必須由系統管理者手動進行資料的Striping,也就是說,歌曲必須由系統管理者分配到不同的Server上,並將相關資訊記錄到NetJukeJoint的Database裡。因此,若使用者發現到有一NetJukeServer掛掉後,將可向下一擁有此歌曲的NetJukeServer要求做串流。NetJukeJoint Failure Control當NetJukeJoint啟動以後,會先向Reception註冊,原則上是以地理區域來分配,如果同一個區域已經有一個NetJukeJoint,那麼後面註冊的NetJukeJoint就會視為該區域的備用NetJukeJoint,

15、由Reception告知該區域的所有NetJukeJoint,以及該區域的所有使用者。每個NetJukeJoint發現任何狀態改變的時候,都會記錄在log裡面。當一個NetJukeJoint掛掉以後,若此時使用者進行歌曲查詢或是要求開新包廂、加入包廂,將會產生Remote Exception,這時候使用者會找下一個備份的NetJukeJoint,並將要求導向該NetJukeJoint。Media Streaming Failure Control這部分的Failure Control主要處理兩種情況:第一種情況自動播歌功能。是處理client端可能點播錯誤的、不存在的MTV,或是存有此MTV的NetJukeServer已死掉,但是client端並不知道。在NetJukeBox裡,使用者若偵側到即將播一首新KTV時,將會啟動一個Timer,設定Timeout為時間20秒。在Timeout的時間過後,Client端仍沒有接收到欲點播歌曲的Streaming Media的訊息,包廂內所有Client都將會自動播下一首歌。第二種情況斷點續傳功能。是處理Client端開始收到Media Streaming後,忽然間,負責做串流的NetJukeServer掛掉了,那麼client端收到的畫面勢必會中斷。 NetJukeBox除了能支援歌曲重傳外,更能支援從斷點重傳,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号