怎样更改mp3文件的作者和歌名信息(通过vb编程实现)?

解决方案 »

  1.   

    完全能满足你的要求:form控件自己放,这是代码
    Dim Title As String * 30
    Dim Artist As String * 30
    Dim Album As String * 30
    Dim Year As String * 4
    Dim genre As Byte
    Dim Comment As String * 29
    Dim TrckNum As BytePublic Sub genr()
    Dim genre(0 To 148)
    genre(0) = "Blues"
    genre(1) = "Classic Rock"
    genre(2) = "Country"
    genre(3) = "Dance"
    genre(4) = "Disco"
    genre(5) = "Funk"
    genre(6) = "Grunge"
    genre(7) = "Hip-Hop"
    genre(8) = "Jazz"
    genre(9) = "Metal"
    genre(10) = "New Age"
    genre(11) = "Oldies"
    genre(12) = "Other"
    genre(13) = "Pop"
    genre(14) = "R&B"
    genre(15) = "Rap"
    genre(16) = "Reggae"
    genre(17) = "Rock"
    genre(18) = "Techno"
    genre(19) = "Industrial"
    genre(20) = "Alternative"
    genre(21) = "Ska"
    genre(22) = "Death Metal"
    genre(23) = "Pranks"
    genre(24) = "Soundtrack"
    genre(25) = "Euro-Techno"
    genre(26) = "Ambient"
    genre(27) = "Trip-Hop"
    genre(28) = "Vocal"
    genre(29) = "Jazz+Funk"
    genre(30) = "Fusion"
    genre(31) = "Trance"
    genre(32) = "Classical"
    genre(33) = "Instrumental"
    genre(34) = "Acid"
    genre(35) = "House"
    genre(36) = "Game"
    genre(37) = "Sound Clip"
    genre(38) = "Gospel"
    genre(39) = "Noise"
    genre(40) = "Alternative Rock"
    genre(41) = "Bass"
    genre(42) = "Soul"
    genre(43) = "Punk"
    genre(44) = "Space"
    genre(45) = "Meditative"
    genre(46) = "Instrumental Pop"
    genre(47) = "Instrumental Rock"
    genre(48) = "Ethnic"
    genre(49) = "Gothic"
    genre(50) = "Darkwave"
    genre(51) = "Techno-Industrial"
    genre(52) = "Electronic"
    genre(53) = "Pop-Folk"
    genre(54) = "Eurodance"
    genre(55) = "Dream"
    genre(56) = "Southern Rock"
    genre(57) = "Comedy"
    genre(58) = "Cult"
    genre(59) = "Gangsta"
    genre(60) = "Top 40"
    genre(61) = "Christian Rap"
    genre(62) = "Pop/Funk"
    genre(63) = "Jungle"
    genre(64) = "Native US"
    genre(65) = "Cabaret"
    genre(66) = "New Wave"
    genre(67) = "Psychadelic"
    genre(68) = "Rave"
    genre(69) = "Showtunes"
    genre(70) = "Trailer"
    genre(71) = "Lo-Fi"
    genre(72) = "Tribal"
    genre(73) = "Acid Punk"
    genre(74) = "Acid Jazz"
    genre(75) = "Polka"
    genre(76) = "Retro"
    genre(77) = "Musical"
    genre(78) = "Rock & Roll"
    genre(79) = "Hard Rock"
    genre(80) = "Folk"
    genre(81) = "Folk-Rock"
    genre(82) = "National Folk"
    genre(83) = "Swing"
    genre(84) = "Fast Fusion"
    genre(85) = "Bebob"
    genre(86) = "Latin"
    genre(87) = "Revival"
    genre(88) = "Celtic"
    genre(89) = "Bluegrass"
    genre(90) = "Avantgarde"
    genre(91) = "Gothic Rock"
    genre(92) = "Progressive Rock"
    genre(93) = "Psychedelic Rock"
    genre(94) = "Symphonic Rock"
    genre(95) = "Slow Rock"
    genre(96) = "Big Band"
    genre(97) = "Chorus"
    genre(98) = "Easy Listening"
    genre(99) = "Acoustic"
    genre(100) = "Humour"
    genre(101) = "Speech"
    genre(102) = "Chanson"
    genre(103) = "Opera"
    genre(104) = "Chamber Music"
    genre(105) = "Sonata"
    genre(106) = "Symphony"
    genre(107) = "Booty Bass"
    genre(108) = "Primus"
    genre(109) = "Porn Groove"
    genre(110) = "Satire"
    genre(111) = "Slow Jam"
    genre(112) = "Club"
    genre(113) = "Tango"
    genre(114) = "Samba"
    genre(115) = "Folklore"
    genre(116) = "Ballad"
    genre(117) = "Power Ballad"
    genre(118) = "Rhytmic Soul"
    genre(119) = "Freestyle"
    genre(120) = "Duet"
    genre(121) = "Punk Rock"
    genre(122) = "Drum Solo"
    genre(123) = "Acapella"
    genre(124) = "Euro-House"
    genre(125) = "Dance Hall"
    genre(126) = "Goa"
    genre(127) = "Drum & Bass"
    genre(128) = "Club-House"
    genre(129) = "Hardcore"
    genre(130) = "Terror"
    genre(131) = "Indie"
    genre(132) = "BritPop"
    genre(133) = "Negerpunk"
    genre(134) = "Polsk Punk"
    genre(135) = "Beat"
    genre(136) = "Christian Gangsta"
    genre(137) = "Heavy Metal"
    genre(138) = "Black Metal"
    genre(139) = "Crossover"
    genre(140) = "Contemporary C"
    genre(141) = "Christian Rock"
    genre(142) = "Merengue"
    genre(143) = "Salsa"
    genre(144) = "Thrash Metal"
    genre(145) = "Anime"
    genre(146) = "Jpop"
    genre(147) = "SynthPop"
    genre(148) = ""
    For i = 0 To 148
    frmId3.Combo1.AddItem genre(i), i
    Next i
    End SubPublic Sub Update(selectedFile As String)
    Dim B As String
    Dim A As String
    On Error GoTo hell:
    Open selectedFile For Binary Access Write As #1
    savestate:
    Position = FileLen(selectedFile) - 128
    start = Position + 4
    Title = Trim(frmId3.txtTitle.Text)
    Put #1, start, Title
    B = Len(frmId3.txtTitle.Text)
    A = 30 - B
    For i = 0 To A
    Put #1, (start + B) + i, CByte(0)
    Next istart = start + 30
    Artist = Trim(frmId3.txtArtist.Text)
    Put #1, start, Artist
    B = Len(frmId3.txtArtist.Text)
    A = 30 - B
    For i = 0 To A
    Put #1, (start + B) + i, CByte(0)
    Next istart = start + 30
    Album = Trim(frmId3.txtAlbum.Text)
    Put #1, start, Album
    B = Len(frmId3.txtAlbum.Text)
    A = 30 - B
    For i = 0 To A
    Put #1, (start + B) + i, CByte(0)
    Next istart = start + 30
    Year = frmId3.txtYear.Text
    Put #1, start, Year
    B = Len(frmId3.txtYear.Text)
    A = 30 - B
    For i = 0 To A
    Put #1, (start + B) + i, CByte(0)
    Next istart = start + 4
    Comment = Trim(frmId3.txtComm.Text)
    Put #1, start, Comment
    B = Len(frmId3.txtComm.Text)
    A = 30 - B
    For i = 0 To A
    Put #1, (start + B) + i, CByte(0)
    Next istart = start + 29
    If frmId3.txtTrck.Text = "" Then
    Put #1, start, CByte(0)
    Else
    TrckNum = CByte(frmId3.txtTrck.Text)
    Put #1, start, TrckNum
    End Ifstart = start + 1
    For i = 0 To 148
    If Combo1.ListIndex = i Then
    genre = i
    End If
    Next i
    Put #1, start, genre
    Close #1
    Exit Sub
    hell:
    Dim mes
    mes = MsgBox("You can not modify this file while is playing...")
    Close #1End Sub
      

  2.   

    Public Sub Id3v1(selectedFile As String)Dim test As String * 3
    Dim Detect As ByteIf frmId3.lblTest = "TAG" Then frmId3.cmdUpdate.Enabled = True
    openstate:
    Open selectedFile For Binary Access Read As #1
    Position = FileLen(selectedFile) - 128Get #1, Position + 1, test
    frmId3.lblTest = testGet #1, FileLen(selectedFile), Detect
    lblDetect = DetectIf test = "TAG" ThenCheck1.Value = 1start = Position + 4
    Get #1, start, Title
    frmId3.txtTitle.Text = Trim(Title)start = start + 30
    Get #1, start, Artist
    frmId3.txtArtist.Text = Trim(Artist)start = start + 30
    Get #1, start, Album
    frmId3.txtAlbum.Text = Trim(Album)start = start + 30
    Get #1, start, Year
    frmId3.txtYear.Text = Trim(Year)start = start + 4
    Get #1, start, Comment
    frmId3.txtComm.Text = Trim(Comment)start = start + 29
    Get #1, start, TrckNum
    Select Case TrckNum
    Case 0
    frmId3.txtTrck = ""
    Case Else
    frmId3.txtTrck = TrckNum
    End SelectFor i = 0 To 148
    Select Case lblDetect
    Case i
    frmId3.Combo1.ListIndex = i
    Case 255
    frmId3.Combo1.ListIndex = 148
    End Select
    Next ifrmId3.txtTitle.Enabled = True
    frmId3.txtArtist.Enabled = True
    frmId3.txtAlbum.Enabled = True
    frmId3.txtYear.Enabled = True
    Combo1.Enabled = True
    frmId3.txtTrck.Enabled = True
    frmId3.txtComm.Enabled = TruefrmId3.txtTitle.BackColor = &H80000005
    frmId3.txtArtist.BackColor = &H80000005
    frmId3.txtAlbum.BackColor = &H80000005
    frmId3.txtYear.BackColor = &H80000005
    Combo1.BackColor = &H80000005
    frmId3.txtTrck.BackColor = &H80000005
    frmId3.txtComm.BackColor = &H80000005Else
    frmId3.Check1.Value = 0
    frmId3.txtTitle.Text = ""
    frmId3.txtArtist.Text = ""
    frmId3.txtAlbum.Text = ""
    frmId3.txtYear.Text = ""
    frmId3.Combo1.ListIndex = 148
    frmId3.txtTrck.Text = ""
    frmId3.txtComm.Text = ""frmId3.txtTitle.Enabled = False
    frmId3.txtArtist.Enabled = False
    frmId3.txtAlbum.Enabled = False
    frmId3.txtYear.Enabled = False
    frmId3.Combo1.Enabled = False
    frmId3.txtTrck.Enabled = False
    frmId3.txtComm.Enabled = FalsefrmId3.txtTitle.BackColor = &H8000000F
    frmId3.txtArtist.BackColor = &H8000000F
    frmId3.txtAlbum.BackColor = &H8000000F
    frmId3.txtYear.BackColor = &H8000000F
    frmId3.Combo1.BackColor = &H8000000F
    frmId3.txtTrck.BackColor = &H8000000F
    frmId3.txtComm.BackColor = &H8000000FEnd If
    Close #1
    End SubPrivate Sub cmdUpdate_Click()
    Update (cdlId3.FileName)
    End SubPrivate Sub Command1_Click()
    txtTitle.Text = LCase(txtTitle.Text)
    txtAlbum.Text = LCase(txtAlbum.Text)
    txtArtist.Text = LCase(txtArtist.Text)
    End SubPrivate Sub cmdCancel_Click()
    Unload Me
    End SubPrivate Sub Command2_Click()
    cdlId3.Filter = "Mpeg Layer III files (*.mp3)|*.mp3"
    cdlId3.ShowOpen
    If cdlId3.FileName <> "" Then
    Id3v1 (cdlId3.FileName)
    Check1.Enabled = True
    Else: Exit Sub
    End If
    End SubPrivate Sub Form_Load()
    genr
    frmId3.Combo1.ListIndex = 148
    End Sub
    Private Sub Check1_Click()
    If Check1.Value = 1 Then
    If lblTest = "TAG" Then
    cmdUpdate.Enabled = True
    Exit Sub
    Else
    cmdUpdate.Enabled = True
    Open selectedFile For Binary Access Write As #1
    Position = FileLen(selectedFile)
    Dim place As String * 3
    place = "TAG"
    Put #1, Position, place
    Position = Position + 2
    For i = 1 To 125
    Put #1, Position + i, CByte(0)
    Next i
    Put #1, Position + 125, CByte(148)
    End If
    End If
    txtTitle.Enabled = True
    txtArtist.Enabled = True
    txtAlbum.Enabled = True
    txtYear.Enabled = True
    Combo1.Enabled = True
    txtTrck.Enabled = True
    txtComm.Enabled = TruetxtTitle.BackColor = &H80000005
    txtArtist.BackColor = &H80000005
    txtAlbum.BackColor = &H80000005
    txtYear.BackColor = &H80000005
    Combo1.BackColor = &H80000005
    txtTrck.BackColor = &H80000005
    txtComm.BackColor = &H80000005Close #1
    End SubPrivate Sub txtYear_Change()
    If Not IsNumeric(txtYear.Text) Then
        txtYear.Text = ""
    End If
    End Sub