با عرض سلام خدمت اساتید محترم
من دارم روی 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%
دیدگاه