找回密码
 加入
搜索
查看: 2395|回复: 14

au3是否能实现 lrc 同步的功能???

[复制链接]
发表于 2009-2-12 17:14:54 | 显示全部楼层 |阅读模式
好像目前已经可以播放mp3了

如果加上歌词的话就完美了

附上 一个歌词。

我想应该可以实现的

[ti:稻香]
[ar:周杰伦]
[al:魔杰座]
[by:bzmtv.com]

[00:02.00]周杰伦 - 稻香
[00:04.00]词:周杰伦 曲:周杰伦
[00:06.00]www.50004.com
[00:08.00]好歌收藏 放飞心情
[00:10.00]
[00:30.86]对这个世界如
[00:32.50]果你有太多的抱怨
[00:34.38]跌倒了
[00:35.48]就不敢继续往前走
[00:37.30]为什么
[00:38.45]人要这么的脆弱 堕落
[00:41.31]请你打开电视看看
[00:43.16]多少人 为生命在努力
[00:45.45]勇敢的走下去
[00:47.17]我们是不是该知足
[00:49.53]珍惜一切 就算没有拥有
[00:53.32]
[00:54.02]还记得你说家是唯一的城堡
[00:57.69]随着稻香河流继续奔跑
[01:00.63]微微笑 小时候的梦我知道
[01:05.81]不要哭让萤火虫带著你逃跑
[01:09.42]乡间的歌谣永远的依靠
[01:12.34]回家吧 回到最初的美好
[01:17.65]
[01:41.02]不要这么容易就想放弃
[01:43.35]就像我说的
[01:44.77]追不到的梦想
[01:45.75]换个梦不就得了
[01:47.86]为自己的人生鲜艳上色
[01:49.92]先把爱涂上喜欢的颜色
[01:51.98]
[01:52.68]笑一个吧
[01:53.81]功成名就不是目的
[01:55.72]让自己快乐快乐
[01:57.01]这才叫做意义
[01:58.62]童年的纸飞机
[02:00.12]现在终于飞回我手里
[02:03.67]
[02:04.37]所谓的那快乐
[02:05.71]赤脚在田里追蜻蜓追到累了
[02:08.62]偷摘水果被蜜蜂给叮到怕了
[02:11.75]谁在偷笑呢
[02:13.29]我靠着稻草人 吹着风
[02:15.27]唱着歌 睡着了
[02:16.81]哦 哦~
[02:17.57]午后吉它在虫鸣中更清脆
[02:19.65]哦 哦~
[02:20.50]阳光洒在路上就不怕心碎
[02:23.00]珍惜一切 就算没有拥有
[02:26.96]
[02:27.66]还记得你说家是唯一的城堡
[02:31.36]随着稻香河流继续奔跑
[02:34.25]微微笑 小时候的梦我知道
[02:39.40]不要哭让萤火虫带著你逃跑
[02:43.06]乡间的歌谣永远的依靠
[02:46.08]回家吧 回到最初的美好
[02:50.38]
[02:51.08]还记得你说家是唯一的城堡
[02:54.73]随着稻香河流继续奔跑
[02:57.73]微微笑 小时候的梦我知道
[03:02.76]不要哭让萤火虫带著你逃跑
[03:06.50]乡间的歌谣永远的依靠
[03:09.46]回家吧 回到最初的美好
[03:15.31]~~End~~

[ 本帖最后由 lele9013 于 2009-2-12 17:15 编辑 ]
发表于 2009-2-12 22:45:28 | 显示全部楼层
思路很简单

TimerInit()之后while循环
TimerDiff得到时间差值
把差值round了后比较时间轴


#include 

GUICreate("世界你好", 200, 100)
GUICtrlCreateLabel("你好世界!你最近怎样?", 30, 10)
$okbutton = GUICtrlCreateButton("确定", 70, 50, 60)
GUISetState(@SW_SHOW)

$data = 0
$begin = TimerInit()

While 1
        $msg = GUIGetMsg()
        $dif = TimerDiff($begin)
        $data = $data + 1
        If (Round($dif, 1) == 5.5) Then
                ToolTip("time=5.5")
        EndIf
        Select
                Case $msg = $okbutton
                        MsgBox(0, "窗口事件", "循环次数:" & $data & ",时间间隔:" & $dif)

                Case $msg = $GUI_EVENT_CLOSE
                        MsgBox(0, "窗口事件", "您选择了关闭!正在退出...")
                        ExitLoop
        EndSelect
WEnd
 楼主| 发表于 2009-2-13 10:03:10 | 显示全部楼层
仔细看了下

貌似这个 不能做成通用的吧

毕竟每个lrc是不同的

能否 按[xxx:xxxx]的时间进行匹配呢?

[ 本帖最后由 lele9013 于 2009-2-13 10:13 编辑 ]
发表于 2009-2-13 12:36:29 | 显示全部楼层
期待牛人出现
发表于 2009-2-13 12:46:05 | 显示全部楼层
搞定
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Sound.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 502, 81, 262, 265)
$Label1 = GUICtrlCreateLabel("作者:35888894", 8, 16, 484, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xC0C0C0)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Label2 = GUICtrlCreateLabel("作者:35", 8, 16, 484, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFF0080)
$Button1 = GUICtrlCreateButton("PLAY", 8, 48, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$work=0
Dim $neirong[9999]
idopen()
$line_1=0
Dim $shijian
Dim $sjpd
Dim $geshu
$tm=0
$numold=0
$num=0
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $sound = _SoundOpen("zhoujielun-daoxiang.mp3")
                        _SoundPlay($sound)
                        $work=1
                        $line_1=0
        EndSwitch
        If $work=1 Then
                $tm=_SoundPos ( $sound,2)
;                ToolTip($tm&"   "&Int((StringMid($neirong[$line_1],2,2))*60*1000+Int(StringMid($neirong[$line_1],5,2))*1000+Int(StringMid($neirong[$line_1],8,2)))&"  num="&$num&"  shijian="&$shijian&" geshu="&$geshu )
        

If $tm>=Int((StringMid($neirong[$line_1],2,2))*60*1000+Int(StringMid($neirong[$line_1],5,2))*1000+Int(StringMid($neirong[$line_1],8,2))) Then
        $shijian=Int((StringMid($neirong[$line_1+1],2,2))*60*1000+Int(StringMid($neirong[$line_1+1],5,2))*1000+Int(StringMid($neirong[$line_1+1],8,2)))-Int((StringMid($neirong[$line_1],2,2))*60*1000+Int(StringMid($neirong[$line_1],5,2))*1000+Int(StringMid($neirong[$line_1],8,2)))
                        GUICtrlSetData($Label1,StringMid($neirong[$line_1],11))
                        GUICtrlSetFont($Label1, 12, 400, 0, "MS Sans Serif")
                        GUICtrlSetColor($Label1, 0xC0C0C0)
                        GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
                        GUICtrlSetData($Label2,"")
                        GUICtrlSetFont($Label2, 12, 400, 0, "MS Sans Serif")
                        GUICtrlSetColor($Label2, 0xFF0080)
                        GUICtrlSetBkColor($Label2, $GUI_BKCOLOR_TRANSPARENT)
                        $geshu=StringLen(StringMid($neirong[$line_1],11))
                        If $geshu>0 Then
                        $sjpd=$shijian/($geshu)
                EndIf
        
                        $line_1+=1
                EndIf
                                ;------------------------------------------------------------------红字歌词循环
        $num=Ceiling($geshu-(Int((StringMid($neirong[$line_1],2,2))*60*1000+Int(StringMid($neirong[$line_1],5,2))*1000+Int(StringMid($neirong[$line_1],8,2)))-$tm)/$sjpd)
        ;        ToolTip($tm&"   "&Int((StringMid($neirong[$line_1],2,2))*60*1000+Int(StringMid($neirong[$line_1],5,2))*1000+Int(StringMid($neirong[$line_1],8,2)))&"  num="&$num&"  shijian="&$shijian&" geshu="&$geshu )
                         

                                If $num>=0 And $num <> $numold And $line_1>0 Then                                        
                                ;        Beep(1000,10)
                                                 rgc($num)
                                        $numold        =$num
                                                EndIf
                                ;------------------------------------------------------------------                        
                
                If $tm=_SoundLength ( $sound,2) Then _SoundClose ( $sound )
                EndIf
WEnd


Func idopen()
                        $var="F:\AU3学习\音乐播放\zhoujielun-daoxiang.txt"
                If $var<>"" Then 
                        Local $aArray
                        _FileReadToArray ( $var, $aArray)
                        For $i=0 To $aArray[0]-1
                                        If $aArray[$i+1]="" Then ExitLoop
                                ;_GUICtrlListBox_AddString($List1,$aArray[$i+1])
                                $neirong[$i]=$aArray[$i+1]
                        Next
EndIf
EndFunc

Func rgc($co)
                        GUICtrlSetData($Label2,StringMid(StringMid($neirong[$line_1-1],11),1,$co))
                        GUICtrlSetFont($Label2, 12, 400, 0, "MS Sans Serif")
                        GUICtrlSetColor($Label2, 0xFF0080)
                        GUICtrlSetBkColor($Label2, $GUI_BKCOLOR_TRANSPARENT)
                EndFunc


注意歌词必须是[00:02.00]周杰伦 - 稻香,这样的格式,否则会出错,前面必须是“[00:02.00]"这样的格式
 楼主| 发表于 2009-2-13 13:04:37 | 显示全部楼层
请问你用的是什么版本

我最新的 测试 按play 无效

[ 本帖最后由 lele9013 于 2009-2-13 13:13 编辑 ]
发表于 2009-2-13 13:15:54 | 显示全部楼层
我的是最新的版本,你看看你MP3设置有错没?还有歌词的路径
 楼主| 发表于 2009-2-13 13:24:39 | 显示全部楼层
饿。。对了。是lrc部分前面有[ti:稻香]
[ar:周杰伦]
[al:魔杰座]
[by:bzmtv.com]

还有空格

能不能兼容性强点

毕竟我是做通用的。。- -
发表于 2009-2-13 13:27:32 | 显示全部楼层
晕死,都给你代码了,自己改下好吧?
提示你下,可以设置下,如果不是[00:00:00]格式的跳过
 楼主| 发表于 2009-2-13 13:59:01 | 显示全部楼层
恩 弄好了。。谢谢了

只是发现一个问题

会闪烁。。

我已经提供源码

有空的话一起研究下吧

[ 本帖最后由 lele9013 于 2009-2-13 16:29 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-2-13 14:10:51 | 显示全部楼层
8错8错,下个看看
 楼主| 发表于 2009-2-13 14:20:03 | 显示全部楼层
但是会闪烁。。。。。有办法解决吗
发表于 2009-2-13 14:35:23 | 显示全部楼层
正在想办法,闪烁十分不爽啊....
还有这个东西BUG不少,不过要是做完美了真的不输给任何播放器哦
 楼主| 发表于 2009-2-14 10:18:52 | 显示全部楼层
研究了很长时间

发现 是$Label1 $Label2 产生的闪烁

如果不用卡拉ok的方式。。

光显示一个的话 是不会闪的。。。
 楼主| 发表于 2009-2-16 21:38:17 | 显示全部楼层
继续求教下。。哎 还差一点点
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 13:33 , Processed in 0.079857 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表