如何读取媒体文件的摘要信息?!

leletktk 2004-09-01 10:51:15
当选定一个媒体文件(比如mp3文件)后,单击鼠标右键,在文件属性窗口中有文件摘要信息.请问如何有vb读取其信息,和如何用vb写入这些信息.就好详细叙述!谢谢
...全文
565 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
INGDI 2010-06-10
  • 打赏
  • 举报
回复
mark
online 2004-09-01
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3276/3276922.xml?temp=6.647891E-02
看这个例子,比较通用
starsoulxp 2004-09-01
  • 打赏
  • 举报
回复
一个获取mp3信息的例子

Public Type Mp3tag
Artist As String ’Artist 存储歌手信息
Album As String ’Album 存储唱片专辑信息
Title As String ’Title 存储标题信息
Year As String ’Year 存储年代信息
Comments As String ’Comments 存储备注信息
Genre As Integer ’Genre 存储音乐风格序列
End Type

然后,定义一个获取MP3信息的函数,它将返回这些信息,代码如下:

Public Function GetMp3Tag(FName As String) As Mp3tag
Dim Artist As String
Dim Album As String
Dim Title As String
Dim Year As String
Dim Comments As String
Dim Genre As Integer

If FName = "" Then Exit Function

If Dir(FName) = "" Then Exit Function

Dim FileNum As Integer

FileNum = FreeFile ’得到一个自由的文件号

Dim strInput As String

Open FName For Binary Access Read As FileNum ’以二进制形式打开文件

If LOF(FileNum) < 128 Then
Close FileNum
Exit Function
End If

Seek FileNum, LOF(FileNum) - 127 ’把文件指针移动到MP3信息处
strInput = Space(3)
Get FileNum, , strInput


If strInput <> "TAG" Then ’如果没有发现信息标识,就关闭文件
Close FileNum
GoTo Done:
End If

strInput = Space(30)
Get FileNum, , strInput
Title = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Artist = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Album = Trim(strInput)

strInput = Space(4)
Get FileNum, , strInput
Year = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Comments = Trim(strInput)

strInput = Space(1)
Get FileNum, , strInput
Genre = Asc(strInput)

Done:
GetMp3Tag.Title = Title
GetMp3Tag.Artist = Artist
GetMp3Tag.Album = Album
GetMp3Tag.Year = Year
GetMp3Tag.Year = Comments
If Genre < 0 Or Genre > 254 Then Genre = 12
GetMp3Tag.Genre = CInt(Genre)

Close FileNum

End Function

注意:MP3文件对音乐的风格进行了限制,共254种。Genre返回的只是MP3风格的序列号,具体还需要定位,在这里我把所有类型以常数形式列出,每个类型之间用"|"号隔开。

Private Const sGenreMatrix = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _
"Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _
"Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _
"Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _
"House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _
"Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _
"Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _
"Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _
"Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _
"Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _
"Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _
"Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _
"Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _
"Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _
"Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _
"Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _
"Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop"


把以上代码写到一个模块中(.Bas),然后在窗体上加入5个TextBox和1个ComboBox控件,其中5个TextBox控件分别用来显示一首Mp3文件的以下信息:歌手、年代、唱片、评论、标题,ComboBox控件用来显示歌曲的风格。再放一个Command控件,其标题为“显示信息”,在它的Click事件中加入以下代码:
Private sub Command1_click()
Dim mp3Tag as Mp3tag
mp3tag = GetMp3Tag ("c:\Song.mp3")
Text1.Text = mp3tag.Artist
Text2.Text = mp3tag.Album
Text3.Text = mp3tag.Title
Text4.Text = mp3tag.Year
Text5.Text = mp3tag.Comments
Combo1.ListIndex = mp3tag.Genre
End Sub
在窗体的加载过程中加入如下代码:
Private Sub Form_Load()
Dim i As Integer,GenreArray() As String
GenreArray = Split(sGenreMatrix, "|")
For i = LBound(GenreArray) To UBound(GenreArray)
Combo1.AddItem GenreArray(i)
Next i
End Sub

以上代码在VB6 \Win2000中测试通过。

http://www.vbaccelerator.com/home/VB/Code/vbMedia/Reading_and_Writing_MP3_ID3v1_and_v2_Tags/MP3_ID3_Tags_Code.zip
这个例子可以读取修改MP3_ID3v1和ID3v2的Tag
renjunjun 2004-09-01
  • 打赏
  • 举报
回复
收藏
starsoulxp 2004-09-01
  • 打赏
  • 举报
回复
Mp3Play.ocx是一个专门播放MP3音乐文件的VB控件就行。我们编写自己的播放器,使用该控件,并适当设置其属性,就可以获得专业级的MP3音乐效果。要想使用该控件,最好将它放到Windows\system目录,并且在注册表中注册。利用该控件,还可以将一个MP3文件解码为一个WAV文件。Mp3Play.ocx的主要属性有:
  
  BitRate:MP3流比特率;FrameCount:MP3流帧记数;TotalTime:总计已播放的时间;FrameNotifyCount(RW):发送一次通告的帧数,缺省为32;IsCopyrighted、IsOriginal、HasChecksums:从MP3流获得的发行信息;SampleFrequency:采样率;Layer:取值可以为1、2、3,分别代表Layer1、Layer2、Layer3的标准,缺省为3,这意味着MPx的文件都可以播放;MPEGVersion:取值代表MPEG-1或MPEG-2。常用的方法有:
  
  AboutBox():显示About框。
  
  Authorize(Name,Password):验证许可证(注册码),Name即注册名,Password为注册码,由控件的提供商在用户注册后提供,返回值为0则通过,否则为5。Open(Inputfile,Outputfile):打开MPEG音频文件并解码播放,若在声卡上播放则Outputfile应为空串,返回非0值表示解码有误。如果Outputfile为文件名则解码至WAV文件。也就是说,可以利用此方法编写MP3-WAV转换器。Close:关闭当前MPEG流解码。
  
  GetVolumeLeft,GetVolumeRight:获取左右声道的音量,返回Long型值。SetVolume(leftchannel,rightchannel):设置系统左右声道音量。Pause():暂停,奇次声音暂停,偶次开启。
  
  Play():开始解码,并播放当前MPEG文件,返回0表示解码无误。Stop():停止当前解码工作,返回非0表示有误。
  
  下面,我们一步一步地完成:
  
  1.添加Mp3Play.ocx控件
  
  启动VB5,选择StandardEXE。此时,左边的控件面板中只是一些Win95标准控件。我们选Project(工程)菜单下的Components...(组件)项,在弹出的对话框中选中Dialog-MedienMp3PlayActiveXControlModule项。这“宝贝”即我们所需的MP3控件。确定后在控件面板中会增添一个蓝色的喇叭图标,表示该控件已经添加到控件面板中。2.设置属性
  
  点中蓝色喇叭,在窗体中拖动一个矩形框,松开后在窗体中出现MP3控件图标。为了在播放时隐去喇叭,在MP3Play1的属性表中将Visible设为False。一般就这么多,剩下的就是使用它的方法(Methods)了。3.添加按钮
  
  点中“Command”按钮,在窗体中建立三个名字分别为Command1、Command2、Command3的命令按钮,将它们的Caption分别设为“选择MP3文件”、“播放”、“暂停”。4.添加CommonDialog控件
  
  为能方便地选择MP3文件,还需文件打开对话框。如果控件面板中没有此控件,如1中所述选中Components菜单项,在MicrosoftCommonDialogControl5.0前的复选框中打勾,确认后即可在控件面板中看到此控件图标。在窗体中建立一个名为CommonDialog1的对象,为使能快速找到MP3的文件,需要设置它的Filter属性为“.MP3|.MP3”。5.在按钮中编写相应的代码
  
  双击Command1,在PrivateSubCommand1_Click()中输入以下代码:CommonDialog1.ShowOpen
  
  双击Command2,在PrivateSubCommand2_Click()中输入:Err=Mp3Play1.Open(CommonDialog1.filename,″″)Mp3Play1.Play
  
  双击Command3,在PrivateSubCommand3_Click()中输入:Mp3Play1.Pause
  
  6.调整窗口大小,运行播放器
  
huangjianyou 2004-09-01
  • 打赏
  • 举报
回复
例如获取wma的信息:

'引用Windows Media Player
Private Sub cmdOk_Click()
Dim I As Long
Dim oWMP As WindowsMediaPlayer
Dim oMedia As IWMPMedia3
Dim oPlaylist As IWMPPlaylist

Set oWMP = New WindowsMediaPlayer
Set oMedia = oWMP.newMedia(App.Path & "\Study06\文件名.wma")
With oMedia
'列出所有可用属性
For I = 0 To .attributeCount - 1
'Debug.Print .getAttributeName(I)
txt.Text = txt.Text & .getAttributeName(I) & Space(20)
Next
'设定属性
Call .setItemInfo("Author", "作者")
End With
End Sub

^_^

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧