lele9013 发表于 2009-2-12 17:14:54

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

好像目前已经可以播放mp3了

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

附上 一个歌词。

我想应该可以实现的






周杰伦 - 稻香
词:周杰伦 曲:周杰伦
www.50004.com
好歌收藏 放飞心情

对这个世界如
果你有太多的抱怨
跌倒了
就不敢继续往前走
为什么
人要这么的脆弱 堕落
请你打开电视看看
多少人 为生命在努力
勇敢的走下去
我们是不是该知足
珍惜一切 就算没有拥有

还记得你说家是唯一的城堡
随着稻香河流继续奔跑
微微笑 小时候的梦我知道
不要哭让萤火虫带著你逃跑
乡间的歌谣永远的依靠
回家吧 回到最初的美好

不要这么容易就想放弃
就像我说的
追不到的梦想
换个梦不就得了
为自己的人生鲜艳上色
先把爱涂上喜欢的颜色

笑一个吧
功成名就不是目的
让自己快乐快乐
这才叫做意义
童年的纸飞机
现在终于飞回我手里

所谓的那快乐
赤脚在田里追蜻蜓追到累了
偷摘水果被蜜蜂给叮到怕了
谁在偷笑呢
我靠着稻草人 吹着风
唱着歌 睡着了
哦 哦~
午后吉它在虫鸣中更清脆
哦 哦~
阳光洒在路上就不怕心碎
珍惜一切 就算没有拥有

还记得你说家是唯一的城堡
随着稻香河流继续奔跑
微微笑 小时候的梦我知道
不要哭让萤火虫带著你逃跑
乡间的歌谣永远的依靠
回家吧 回到最初的美好

还记得你说家是唯一的城堡
随着稻香河流继续奔跑
微微笑 小时候的梦我知道
不要哭让萤火虫带著你逃跑
乡间的歌谣永远的依靠
回家吧 回到最初的美好
~~End~~


[ 本帖最后由 lele9013 于 2009-2-12 17:15 编辑 ]

darrenlee 发表于 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

lele9013 发表于 2009-2-13 10:03:10

仔细看了下

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

毕竟每个lrc是不同的

能否 按的时间进行匹配呢?

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

qq342252004 发表于 2009-2-13 12:36:29

期待牛人出现

35888894 发表于 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
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-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

注意歌词必须是周杰伦 - 稻香,这样的格式,否则会出错,前面必须是“"这样的格式

lele9013 发表于 2009-2-13 13:04:37

请问你用的是什么版本

我最新的 测试 按play 无效

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

35888894 发表于 2009-2-13 13:15:54

我的是最新的版本,你看看你MP3设置有错没?还有歌词的路径

lele9013 发表于 2009-2-13 13:24:39

饿。。对了。是lrc部分前面有




还有空格

能不能兼容性强点

毕竟我是做通用的。。- -

35888894 发表于 2009-2-13 13:27:32

晕死,都给你代码了,自己改下好吧?
提示你下,可以设置下,如果不是格式的跳过

lele9013 发表于 2009-2-13 13:59:01

恩 弄好了。。谢谢了

只是发现一个问题

会闪烁。。

我已经提供源码

有空的话一起研究下吧

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

35888894 发表于 2009-2-13 14:10:51

8错8错,下个看看:face (29):

lele9013 发表于 2009-2-13 14:20:03

但是会闪烁。。。。。有办法解决吗

35888894 发表于 2009-2-13 14:35:23

正在想办法,闪烁十分不爽啊....
还有这个东西BUG不少,不过要是做完美了真的不输给任何播放器哦:face (37):

lele9013 发表于 2009-2-14 10:18:52

研究了很长时间

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

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

光显示一个的话 是不会闪的。。。

lele9013 发表于 2009-2-16 21:38:17

继续求教下。。哎 还差一点点
页: [1]
查看完整版本: au3是否能实现 lrc 同步的功能???