با عرض سلام خدمت اساتید محترم
من دارم روی mp3 کار میکنم و تا الان تونستم header و id3v1 رو بخونم ولی مشکل اینجاست که این header واسه بعضی اهنگها درست کار میکنه و واسه بعضی هاش هم نه , اعصابه منو ریخته بهم :angry:
, کدش رو میزارم اگه کسی از دوستان میتونه کمک کنه :
اینم table هاش :
من دارم روی mp3 کار میکنم و تا الان تونستم header و id3v1 رو بخونم ولی مشکل اینجاست که این header واسه بعضی اهنگها درست کار میکنه و واسه بعضی هاش هم نه , اعصابه منو ریخته بهم :angry:
, کدش رو میزارم اگه کسی از دوستان میتونه کمک کنه :کد:
Function Read_mp3_info(byval Filename As String) As Long
Ff = Freefile()
Filename = Dir(filename)
Printf 1 , 1 , Filename , Blue , White , 8
Open Filename For Binary As #ff
Lngfilesize = Lof(#ff)
Get #ff , B , 1
If B <> 255 Then
If B <> 73 Then
'End
End If
End If
Get #ff , B , 2
If B < 250 Or B > 251 Then
If B = 68 Then
Get #ff , B , 3
If B = 51 Then
Get #ff , Id3ver , 4
Get #ff , B , 7
R = B * 20917152
Get #ff , B , 8
Temp = B * 16384
R = R + Temp
Get #ff , B , 9
Temp = B * 128
R = R + Temp
Get #ff , B , 10
R = R + B
If R > Lngfilesize Or R > 2147483647 Then
End If
End If
End If
End If
Pos = Lngfilesize - 127
Get #ff , Tag , Pos
If Tag = "TAG" Then
Title = "" : Artist = "" : Album = ""
Get #ff , Title
Title = Trim(title)
If Title = "" Or Title = " " Then Title = "No Title"
Get #ff , Artist
Artist = Trim(artist)
If Artist = "" Or Artist = " " Then Artist = "No Artist"
Get #ff , Album
Album = Trim(album)
If Album = "" Or Album = " " Then Album = "No Album"
End If
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Pos = 1 : Seek #ff , Pos
Find_header:
While Eof(#ff) = 0
Get #ff , Bytes(1) , , 2
Bcheck(1) = Bytes(2) And &HE0
If Bytes(1) = &HFF And Bcheck(1) = &HE0 Then Exit While
Wend
Header(1) = Bytes(1) : Header(2) = Bytes(2)
Get #ff , Bytes(1) , , 2
Header(3) = Bytes(1) : Header(4) = Bytes(2)
Bcheck(2) = Bytes(1) And &HF0
If Bcheck(2) = &HF0 Then Goto Find_header
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%%%%%%%%% Get MPEG ID
Ext = Header(2)
Shift Ext , Right , 3
Ext = Ext And 3
Mpeg_id = Lookup(ext , Mpgver)
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%%%%%%%%% Get LAYER
Ext = Header(2)
Shift Ext , Right , 1
Ext = Ext And 3
Layer = Lookup(ext , Layers)
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%%%%%%%%% Get BITRATRE
Ext = Header(3)
Shift Ext , Right , 4
Bitrate = Ext And &HF
If Mpeg_id = 1 Then
Select Case Layer :
Case 1:
Br = Lookup(bitrate , Mpeg1_l1)
Case 2:
Br = Lookup(bitrate , Mpeg1_l2)
Case 3:
Br = Lookup(bitrate , Mpeg1_l3)
End Select
Elseif Mpeg_id = 2 Or Mpeg_id = 25 Then
Select Case Layer :
Case 1:
Br = Lookup(bitrate , Mpeg2_l1)
Case 2:
Br = Lookup(bitrate , Mpeg2_l2o3)
Case 3:
Br = Lookup(bitrate , Mpeg2_l2o3)
End Select
End If
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%%%%%%%%% Get SAMPLE RATE
Ext = Header(3)
Shift Ext , Right , 2
Samplerate = Ext And 3
Select Case Mpeg_id:
Case 1:
Sr = Lookup(samplerate , Mpeg1)
Case 2:
Sr = Lookup(samplerate , Mpeg2)
Case 25
Sr = Lookup(samplerate , Mpeg2o5)
End Select
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Total_t = Get_duration(lngfilesize , Br)
Mm = Total_t / 60
Ss = Total_t Mod 60 '
If Mm < 10 Then Smm = "0" + Str(mm)
If Mm > 9 Then Smm = Str(mm)
If Ss < 10 Then Sss = "0" + Str(ss)
If Ss > 9 Then Sss = Str(ss)
Total_time = Smm + ":" + Sss
Close #ff
Read_mp3_info = Lngfilesize
End Function
Function Get_duration(byval File_size As Long , Byval File_bitrate As Integer) As Integer
Local Tp1 As Single
Local Tp2 As Single
Tp1 = File_size / File_bitrate
Tp2 = Tp1 * 8
Tp2 = Tp2 / 1000
Get_duration = Int(tp2)
End Function
کد:
Mpgver: Data 25 , 0 , 2 , 1 Layers: Data 0 , 3 , 2 , 1 'Bitrate : Mpeg1_l1: Data 000% , 032% , 064% , 096% , 128% , 160% , 192% , 224% , 256% , 288% , 320% , 352% , 384% , 416% , 448% Mpeg1_l2: Data 000% , 032% , 048% , 056% , 064% , 080% , 096% , 112% , 128% , 160% , 192% , 224% , 256% , 320% , 384% Mpeg1_l3: Data 000% , 032% , 040% , 048% , 056% , 064% , 080% , 096% , 112% , 128% , 160% , 192% , 224% , 256% , 320% Mpeg2_l1: Data 000% , 032% , 048% , 056% , 064% , 080% , 096% , 112% , 128% , 144% , 160% , 176% , 192% , 224% , 256% Mpeg2_l2o3: Data 000% , 008% , 016% , 024% , 032% , 040% , 048% , 056% , 064% , 080% , 096% , 112% , 128% , 144% , 160% 'Sample Rate : Mpeg1: Data 44100% , 48000% , 32000% , 00000% Mpeg2: Data 22050% , 24000% , 16000% , 00000% Mpeg2o5: Data 11025% , 12000% , 08000% , 00000%




دیدگاه