『壹』 如何用html+js實現音樂歌詞同步播放器
html好像現在還不能實現,js我估計實現的可能也不大。 必須用JS來解決你的問題,網上開源的JS播放器很多,你可以找一個寫入你靜態頁面裡面即可。
『貳』 javaScript如何滾動顯示歌詞呢
第一步:將你所有的歌詞放在一個層裡面,每句有相等的間隔,但是層的高度設置為你想顯示的那麼高,溢出設置隱藏,設置為絕對定位
第二步:設置動畫:讓歌詞的層每次間隔一定的時間向上運動setInterval函數,還可以設置透明度漸變
第三步:判斷是否到達末尾然後再重頭開始實現循環
『叄』 關於播放器中的功能(歌詞同步),急求VB.NET代碼!!
思路很簡單可以定義一個結構LyricStructure Lyric
Dim Time As Single
Dim Content As String
End Structure聲明一個列表 Private Lyrics As New List(Of Lyric)然後以文本方式把歌詞文件讀入一個變數 並對它進行分析 分別把時間和歌詞內容存入一個Lyric,並加入Lyrics中。代碼如下:(假設歌曲文件的路徑為path)Dim LrcPath As String== IO.Path.GetDirectoryName(cPath) & "/" & IO.Path.GetFileNameWithoutExtension(cPath) & ".lrc"If IO.File.Exists(LrcPath= True Then AnalysisLyric() Private Sub AnalysisLyric()
Lyrics.Clear() '先清空列表
Dim tm As Byte
Dim sr As New IO.StreamReader(LrcPath, System.Text.Encoding.Default) '讀取歌詞文件
Do While sr.EndOfStream = False '判斷是否處於文件流末尾
Dim tmpStr As String = sr.ReadLine '讀取一行
If tmpStr.Length < 5 Then Continue Do '長度小於5則跳過,進行下一次循環
Select Case Mid(tmpStr, 2, 2) '判斷第2-3個字元 因為歌詞里的注釋都是[ti:***]類似的結構
Case "ti"
lTitle = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "ar"
lArtist = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "al"
lAlbum = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "by"
lAuthor = Mid(tmpStr, 5, tmpStr.Length - 5)
Case Else '如果不為以上的內容 則為歌詞正文,進行以下操作
If Not Mid(tmpStr, 1, 6) Like "?##:##" Then Continue Do
Dim time(-1) As String '因為有時歌詞是以[00:00.00][00:00.00]**** 這樣歌詞把多個時間存放在一起的 ,所以定義一個數組來存放歌詞
Do '因為不確定時間的個數,所以此處必須循環判斷
tm = InStr(tmpStr, "]") '因為歌詞時間有時是[00:00.00]形式,有時是[00:00]形式,所以不能單純的截取第幾個字元 ,我是根據查找']'字元來進行判斷的
ReDim Preserve time(time.GetUpperBound(0) + 1) 為time數組重新分配大小
time(time.GetUpperBound(0)) = Mid(tmpStr, 1, tm) 'time.GetUpperBound(0)返回數組的第一維的最大下標
tmpStr = IIf(tmpStr.Length = tm, " ", Mid(tmpStr, tm + 1)) '歌詞內容
Loop While Mid(tmpStr, 1, 6) Like "?##:##" '如果截取剩下的部分依然匹配的話繼續循環
For Each t In time '為每個時間都創建一個Lyric變數
Dim ln As Lyric
ln.Time = SwitchTime(Mid(t, 2, t.Length - 2))
ln.Content = tmpStr
Lyrics.Add(ln)
Next
End Select
Loop
sr.Close() 關閉流
Sort() '把所有Lyric按時間順序排序
End Sub Private Function SwitchTime(ByVal time As String) As Single 『這個函數是用來把00:00.00格式的時間轉化成以秒數顯示的數值
Dim tm As Single
Dim minute As Single = Val(Mid(time, 1, 2))
Dim second As Single = Val(Mid(time, 4, 5))
tm = minute * 60 + second
Return tm
End Function Private Sub Sort()
For i = 0 To Lyrics.Count - 2
For j = i To Lyrics.Count - 1
If Lyrics(i).Time > Lyrics(j).Time Then
Dim tm As Lyric = Lyrics(i)
Lyrics(i) = Lyrics(j)
Lyrics(j) = tm
End If
Next
Next
End Sub 接下來是顯示歌詞的問題了 ,只要有每句歌詞和對應的時間,那麼問題就好辦了。你可以用Windows Media Player控制項返回的時間和每句歌詞的時間做比較,來判斷應該顯示那一句。代碼是很久前寫的 ,那時沒加註釋,都是剛剛加上去的喲,你可以根據你的實際情況自己修改,有什麼不懂的地方可以繼續問我哈~~
『肆』 如何用原生js或者jq或者css3製作會動的歌詞
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Player</title>
<style type="text/css">
#audio-wrapper{
border:1px solid;
text-align:center;
}
.activated{
color:#33b;
font-weight:bold;
background:#ddf;
}
#lrc{
text-align:center;
width:360px;
height:400px;
overflow:hidden;
border:2px solid #ddd;
box-shadow:2px 2px 2px silver;
}
.lyrics-container{
position:relative;
width:99%;
height:80%;
border:1px solid red;
overflow:hidden;
}
.lyrics-container2{
position:absolute;
width:355px;
}
#lrc p{
text-indent:0;
margin:0;
padding:6px;
}
.music-title,.album,.artist{
margin:0;
padding:4px;
text-indent:0;
text-align:left;
}
</style>
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
</head>
<body>
<div id="#audio-wrapper">
<p><audio src="data/aimei.mp3" controls></audio></p>
</div>
<div id="lrc"></div>
<script type="text/javascript">
$(document).ready(function(){
var $lrc = $('#lrc');
var html ='';
$('audio').on('play',function(){
var start = new Date();
if($lrc.html() == ''){
$.ajax({
url:'data/aimei.xml',
type:'get',
dataType:'xml',
success:function(data){
html += '<div class="info">';
if($(data).find('TITLE').length > 0){
html += '<p class="music-title">歌曲:' + $(data).find('TITLE').text()+'</p>';
}
if($(data).find('ALBUM').length > 0){
html += '<p class="album">專輯:' + $(data).find('ALBUM').text()+'</p>';
}
if($(data).find('ARTIST').length > 0){
html += '<p class="artist">演唱:' + $(data).find('ARTIST').text()+'</p>';
}
html += '</div>';
html += '<div class="lyrics-container">'
html += '<div class="lyrics-container2">'
$(data).find('LRC').each(function(){
html += '<p class="lyrics" tag="'+ $(this).attr('TAG') +'">' + $(this).text() +'</p>';
});
html += '</div></div>';
$lrc.html(html);
//alert($(data).find('LRC').length);
}
});
}
var timer = setInterval(function(){
var now = new Date();
var elapsed = now - start;
if($lrc.find('.lyrics').length){
$lrc.find('.lyrics').each(function(){
var isOK = elapsed - $(this).attr('tag');
if(isOK < 13 && isOK > 0){
$lrc.find('.lyrics').removeClass('activated');
$(this).addClass('activated');
if($(this).prevAll('.lyrics').length > 3){
$('.lyrics-container2').animate({
'top':'-=30px'
});
//console.log($(this).prevAll('.lyrics').length);
}
}
});
}
},10);
});
});
</script>
</body>
</html>
『伍』 我需要一個js正則來解析歌詞文件
var str='[00:00.91]春暖花開[00:01.64]演唱:那英[00:03.01][00:21.23]如果你渴求一滴水\n';
str=str.replace(/\]\[/g,'] [');//"]["沒有空格會影響匹配結果
var arr=str.match(/(\[\d{2}:\d{2}\.\d{2}\])(.[^\[\]]*)?/g);
var time=[],txt=[];
for(var i=0;i<arr.length;i++){
/^(\[\d{2}:\d{2}\.\d{2}\])(.[^\[\]]*)?$/.exec(arr[i]);
time.push(RegExp.$1);
txt.push(RegExp.$2);
}
alert(arr);
alert(time);
alert(txt);
『陸』 求一個js歌詞同步的代碼
按照你的說法,應該要用到Ajax,對網頁中播放器插件進行幀聽,然後再對歌詞部分進行處理,網路的Mp3就是這樣做的。
下面就簡單的說一下吧
材料:歌曲、歌曲對應的歌詞(可以是XML,當然也可以是歌詞專用格式lrc,隨便啦,什麼文件都可以)、幾條簡單的JS語句
處理:
1、JSP生成網頁的時候,將音樂播放器插件的ID命名為WMA,當然,你可以隨便命名,只是這里便於說明。
2、讀取XML或LRC內容,利用Ajax載入到id為lrc的div中。
並將XML或LRC的每行的歌詞存到數組testmp3中(此數組當然是二維數組,數據組分別播放時間與歌詞內容)
好了,到此,准備工作就做好了,下面就是重點---歌詞同步。
3、相關語句:
一、定義函數getWMAtime
二、利用Interval=setInterval("getWMAtime()",900),意思就是每隔900毫秒調用getWMAtime這個函數,並將其放入Interval中。
如果要用到「上一曲」「下一曲」,可以將其做為了一個函數,
將音樂的地址賦給WMA.URL,用WMA.controls.play();播放,用WMA.controls.stop();停止播放,用WMA.controls.pause();暫停播放。改變了音樂地址後,記得用Ajax載入新的歌詞!
另:
getWMAtime函數的內容為讀取當前詞曲的播放時間
當前的播放時間:WMA.controls.currentPosition;
歌曲總時間:WMA.currentMedia.ration;
讀取當前的時候後,與數組中時間項進行對比,相同(由於其它原因,可能會出現不相同的情況,因此則用「>=」)則用Ajax對id為lrc的div進行更改,具體怎麼改那就隨便你咯,一般就是改變一下指定行的顏色。
如果前當播放時間==歌曲總時間,那麼就用clearInterval(Interval),停止Interval繼續調用。
好了,一個簡單的JS的歌詞同步播放器就完工啦
『柒』 百度的音樂播放時有同步顯示歌詞,誰知道代碼
網路的這個音樂播放器是有代碼的,但是這個顯示歌詞,是直接鑲嵌到網頁里的.沒有單獨的代碼.它的網頁的整個播放器還有歌詞的代碼是這樣的:
</SCRIPT>
<DIV id=Lrc_div>
<DIV id=url_div>歌曲出處:<A id=song_url href="http://play8.tom.com/uploadfile/song/200702/20/1171954091_245437.mp3">http://play8.tom.com/...1171954091_245437.mp3</A></DIV>
<DIV id=song style="DISPLAY: none">愛情轉移</DIV>
<DIV id=singer style="DISPLAY: none">陳奕迅</DIV>
<DIV id=song_div>歌曲試聽:<B>愛情轉移 網搜 MP3 Wang ... </B></DIV>
<DIV id=S_div>
<DIV id=player_div>
<OBJECT id=MediaPlayer1 codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715 type=application/x-oleobject height=68 standby="Loading Microsoft Windows Media Player components..." width=350 align=baseline border=0 classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95>
<embed src="http://play8.tom.com/uploadfile/song/200702/20/1171954091_245437.mp3" align="baseline" border="0" width="350" height="68"
type="application/x-mplayer2"
pluginspage="http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=media&sba=plugin&"
name="MediaPlayer" showcontrols="1" showpositioncontrols="0"
showaudiocontrols="1" showtracker="1" showdisplay="0"
showstatusbar="1" autosize="0"
showgotobar="0" showcaptioning="0" autostart="1" autorewind="0"
animationatstart="0" transparentatstart="0" allowscan="1"
enablecontextmenu="1" clicktoplay="0"
defaultframe="datawindow" invokeurls="0"> </embed></OBJECT></DIV>
<DIV id=SongNum_div>
<DIV id=plus_div contentEditable=false onclick="if(!isLoadIf) {window.document.getElementById('plus_a').target='mt';reWin();} else {try_iframe.Controller(event);if(!is_ext_mb) reWin();return false;}"><A id=plus_a contentEditable=false style="CURSOR: hand">放入我的音樂盒</A></DIV>
<DIV id=next_div contentEditable=false style="DISPLAY: none" onclick="try_iframe.Controller(event);return false;"><A id=next_a contentEditable=false style="CURSOR: hand">下一首</A></DIV>
<DIV id=pre_div contentEditable=false style="DISPLAY: none" onclick="try_iframe.Controller(event);return false;"><A id=pre_a contentEditable=false style="CURSOR: hand" ?>上一首</A></DIV></DIV></DIV>
<DIV id=Blrc style="CLEAR: both">
<DIV style="BORDER-RIGHT: #b4c2e2 1px solid; BORDER-TOP: #b4c2e2 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #b4c2e2 1px solid; WIDTH: 350px; BORDER-BOTTOM: #b4c2e2 1px solid; TEXT-ALIGN: left">
<TABLE style="BACKGROUND: #eceded" cellSpacing=0 cellPadding=0 width=350>
<TBODY>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 12px; PADDING-BOTTOM: 1px; PADDING-TOP: 5px; TEXT-ALIGN: left"><B>歌詞:</B></TD>
<TD style="TEXT-ALIGN: right"></TD></TR></TBODY></TABLE>
<DIV id=LrcShower_div style="OVERFLOW-Y: scroll; BACKGROUND: #fff; OVERFLOW-X: hidden; WIDTH: 350px; LINE-HEIGHT: 20px; HEIGHT: 276px"><BR><BR><BR><BR><BR><BR><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>陳奕迅</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>愛情轉移</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>徘徊過多少櫥窗 住過多少旅館</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才會覺得分離也並不冤枉</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>感情是用來瀏覽 還是用來珍藏</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>好讓日子天天都過得難忘</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>熬過了多久患難 濕了多長眼眶</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才能知道傷感是愛的遺產</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>流浪幾張雙人床 換過幾次信仰</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才讓戒指義無返顧的交換</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>把一個人的溫暖轉移到另一個的胸膛</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓上次犯的錯反省出夢想</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>每個人都是這樣 享受過提心吊膽</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才拒絕做愛情待罪的羔羊</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>回憶是捉不到的月光握緊就變黑暗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓虛假的背影消失於晴朗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>陽光在身上流轉 等所有業障被原諒</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>愛情不停站 想開往地老天荒 需要多勇敢</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>燭光照亮了晚餐 照不出個答案</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>戀愛不是溫馨的請客吃飯</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>床單上撲滿花瓣 擁抱讓它成長</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>太擁擠就開到了別的土壤</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>感情需要人接班 接近換來期望</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>期望帶來失望的惡性循環</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>短暫的總是浪漫 漫長總會不滿</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>燒完美好青春換一個老伴</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>把一個人的溫暖轉移到另一個的胸膛</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓上次犯的錯反省出夢想</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>每個人都是這樣 享受過提心吊膽</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才拒絕做愛情待罪的羔羊</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>回憶是捉不到的月光握緊就變黑暗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓虛假的背影消失於晴朗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>陽光在身上流轉 等所有業障被原諒</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>愛情不停站 想開往地老天荒 需要多勇敢</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>把一個人的溫暖轉移到另一個的胸膛</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓上次犯的錯反省出夢想</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>每個人都是這樣 享受過提心吊膽</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>才拒絕做愛情待罪的羔羊</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>回憶是捉不到的月光握緊就變黑暗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>讓虛假的背影消失於晴朗</FONT></SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>陽光在身上流轉 等所有業障被原諒</FONT></SPAN><BR><SPAN class=prelrc>愛情不停站 想開往地老天荒 需要多勇敢</SPAN><BR><SPAN class=nowlrc>你不要失望 盪氣回腸是為了 最美的平凡.......</SPAN><BR><SPAN style="FONT-SIZE: 12px; MARGIN-LEFT: 12px"><FONT color=#000000>Over...</FONT></SPAN><BR><BR><BR><BR><BR><BR><BR><BR></DIV></DIV></DIV>
<DIV id=lrctellall_div style="DISPLAY: none"></DIV>
<DIV id=InP_div><A href="http://post..com/f?kw=%B0%D9%B6%C8MP3%CA%D4%CC%FD" target=_blank>意見與反饋</A><A style="COLOR: #666666" href="http://www..com/search/listenright.html" target=_blank>權利聲明</A> </DIV><!-- script type="text/javascript" src="js/jslog.js"></script> -->
<SCRIPT>