有關音樂檔 |
尚未結案
|
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
|
japhen
中階會員 發表:2 回覆:57 積分:71 註冊:2006-08-16 發送簡訊給我 |
|
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
|
japhen
中階會員 發表:2 回覆:57 積分:71 註冊:2006-08-16 發送簡訊給我 |
LRC是目前很流行的MP3字幕檔,一般MP3隨身聽、WINAMP播放器.......有帶字幕功能的都是用這種方法,結構很簡單...
[offset:1000] [00:00.00]優客李林 << 認錯 >> [00:14.00]詞\曲:李驥 [00:15.00] [00:16.00]I don't beloeve it [00:18.00]是我放棄了你 [00:23.00]只為一個沒有理由的決定 [00:31.00]以為這次我可以 [00:34.00]承受你離我而去 [00:39.00]不必讓你傷心 [00:42.00]卻刺痛自己 [03:02.00][00:47.00]一個人走在傍晚七點的台北City [03:11.00][00:56.00]等著心痛就像黑夜一樣的來臨 [03:20.00][01:04.00]I hate myself [03:23.00][01:07.00]又整夜追逐夢中的你 [03:27.00][01:12.00]而明天只剩哭泣的心 [04:09.00][03:38.00][01:22.00]怎麼才能讓我告訴你我不願意 [04:18.00][03:46.00][02:00.00][01:30.00]教彼此都在孤獨裡忍住傷心 [04:26.00][03:55.00][02:08.00][01:38.00]我又怎麼告訴你我還愛你 [04:44.00][04:35.00][04:03.00][02:17.00][01:46.00]是我自己錯誤的決定 [01:53.00]我要告訴你斥我不願意 [02:26.00]( MUSIC ) 由時間標記跟歌詞所組成,時間標記是[ 分 : 秒 : 毫秒 ]的格式(已經很細了)..........有些句子是連續幾個時間標記,那就是表示這句被重覆唱了好幾次,為了節省空間,就把幾個標記疊加起來放....只要播放器的程式別寫的太差,這不是問題 OK,先不考慮你的播放器會不會FORWARD跟BACK..(跳帶),一首歌就從頭播到尾......... 你要準備一個TIMER,解析度要到0.01秒觸發一次(INTERVAL設10),不然歌詞會有點軋不上人的歌聲..... 再準備一個有一首歌總秒數 乘上 100 的字串陣列( 不太吃記憶体,放心 ),比如一首5分鐘的MP3,你就需要準備5*60秒 *100 = 30000 var LRC : array[0..30000] of string ; 用動態長度陣列吧..如果你能掌握動態陣列 接下來就是一句一句解析這個歌詞檔......delphi沒有正則表達式函數可用,殘念...... 所以只能用pos判斷是不是有時間標記( 時間標記前後都是中括號 )... 如果有,把時間標記取出來,換成時間總長.[03:05:00]就是 (3*60 5 0)*100 = 18500 把這句詞放進陣列的第18500號元素中.......... LRC[18500] := '詞XXXXXXXXXXX' ; 一句一句把標記處理掉,大概花個0.001秒就完成了 然後開始播放MP3或其他音樂檔(其實MTV的檔也可以,但MTV大多都有焊死的字幕....不用自己寫) TIMER去計算目前歌放到第幾毫秒,然後在相應的時間到的時候把歌詞顯示出來.... 大致上就是如此,有個更省記憶体的方法來存放時間跟詞,不過技巧多了點,容後再述.
------
歡迎在大陸的台商加入我們的行列 台商小棧 www.twgocn.com |
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
|
hippo04
一般會員 發表:5 回覆:10 積分:3 註冊:2002-10-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |