首先申明,我不是要自己做MPEG解码器。
呵呵,咱就菜鸟一个。
其次,俺是个中国老百姓,拜托各位炎黄子孙们(当然,喜欢中国文化的老外也欢迎进来)
最好能尽量用咱的母语来帮帮俺。(只是尽量啦,那些个1234什么的,还是觉得原样方便些:)现在我希望能做到:
1、仅对非网路、本地的MPEG音频文件解读(如MP2,MPA,MP3,MP4等等)
2、想要获取媒体的基本信息(不是ID3数据)
(声道数、取样率、速率、实际播放时间、是否VBR)
如:128KBit VBR 双声道 混合立体声(这个东东一直没搞懂是啥意思?) 44KHz 等等最重要的是如何正确换算出实际播放时间?3、考虑到ID3v2数据头的问题,要能正确定位实际文件头。
4、坚决不用外部控件。基本上以直接读取文件二进制数据的方式。
请各位高手来帮帮小弟,在下不胜感激!
呵呵,咱就菜鸟一个。
其次,俺是个中国老百姓,拜托各位炎黄子孙们(当然,喜欢中国文化的老外也欢迎进来)
最好能尽量用咱的母语来帮帮俺。(只是尽量啦,那些个1234什么的,还是觉得原样方便些:)现在我希望能做到:
1、仅对非网路、本地的MPEG音频文件解读(如MP2,MPA,MP3,MP4等等)
2、想要获取媒体的基本信息(不是ID3数据)
(声道数、取样率、速率、实际播放时间、是否VBR)
如:128KBit VBR 双声道 混合立体声(这个东东一直没搞懂是啥意思?) 44KHz 等等最重要的是如何正确换算出实际播放时间?3、考虑到ID3v2数据头的问题,要能正确定位实际文件头。
4、坚决不用外部控件。基本上以直接读取文件二进制数据的方式。
请各位高手来帮帮小弟,在下不胜感激!
解决方案 »
- 50分跪求!!!!!!!!!!关于用VB实现picturebox旋转
- vb6.0+win2000+ado
- 关于Addin工程的问题... (在线等待)
- 为什么连续的回复不能越过3次?
- 再次求助,关于取出文本中文的问题。
- 有没有高手知道 速达2000+Pro 进销存软件的业务导航窗体是用什么方法做出来的?小弟在此先谢过了
- 光盘的autorun功能怎么做啊
- VB的高手指点一下,文件保存时的怪问题?
- 请教Vb程序加载窗体时出现错误的通常原因,删除掉form1.log文件不会对以后有影响吧?
- 高分求解-关于打印的问题
- 【问】如何直接录音成MP3格式?
- 【问】如何区分资源管理器是左键还是右键拖过来的文件?
http://community.csdn.net/Expert/topic/3592/3592307.xml?temp=.3629267
ERR_NO_ERROR = 0
VB_ERR_PATH_NOT_FOUND = 76
End EnumPublic Type tagID3v1
Title As String
Artist As String
Album As String
Year As String
comment As String
genre As Byte
genredesc As String
exErrorInfo As enErrorInfo
exPrivate As Variant
End TypePublic Function GetTag(ByVal FileName$, Optional ByVal exRaiseFileIOErrors = False, Optional ByVal asyncIsWorkerThread As Boolean = False) As tagID3v1
If exRaiseFileIOErrors = True Then
On Error GoTo errh
FileLen FileName$
Else
On Error Resume Next
FileLen FileName$
If Err.Number = VB_ERR_PATH_NOT_FOUND Then
GetTag.exErrorInfo = VB_ERR_PATH_NOT_FOUND
GoTo nofileaccess
End If
Err.Clear
End If
On Error GoTo errh
Dim locatedTag As Boolean
Open FileName For Binary As #1
Dim tagHeader$
Seek 1, LOF(1)
Do Until Loc(1) <= 1 Or (LOF(1) - Loc(1)) >= 375
If asyncIsWorkerThread = False Then DoEvents
tagHeader = String(130, 0)
Seek 1, Loc(1) - 130
Get 1, , tagHeader
If InStr(1, tagHeader, "TAG", vbBinaryCompare) Then
Seek 1, Loc(1) - 130
Seek 1, Loc(1) + (InStr(1, tagHeader, "TAG", vbBinaryCompare) + 4)
tagHeader = String(30, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.Title = tagHeader
tagHeader = String(30, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.Artist = tagHeader
tagHeader = String(30, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.Album = tagHeader
tagHeader = String(4, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.Year = tagHeader
tagHeader = String(30, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.comment = tagHeader
tagHeader = String(1, 0)
Get 1, , tagHeader
If InStr(1, tagHeader, Chr(0)) Then
If Left(tagHeader, 1) = Chr(0) Then
tagHeader = ""
End If
End If
GetTag.genre = Asc(tagHeader)
If GetTag.genre Then GetGenreDescription GetTag
locatedTag = True
Exit Do
End If
Seek 1, Loc(1) - 125
Loop
Close #1
If locatedTag = False Then
Dim buffer$
buffer = Mid$(FileName$, InStrRev(FileName$, "\") + 1)
buffer = Mid(buffer, 1, InStrRev(buffer, ".") - 1)
If InStr(1, buffer, "-", 1) < 1 Then
GetTag.Title = Left(buffer, 30)
GetTag.Artist = Left(buffer, 30)
Else
GetTag.Artist = Trim$(Mid(buffer, 1, IIf((InStr(1, buffer, "-", 1) - 1) > 30, 30, InStr(1, buffer, "-", 1) - 1)))
GetTag.Title = Trim$(Mid(buffer, InStr(1, buffer, "-", 1) + 1, 30))
End If
End If
Exit Function
errh:
On Error Resume Next
Close #1
Err.Raise Err.Number, Err.Source, Err.Description
Exit Function
nofileaccess:
End Function
Select Case id3tag.genre
Case 0:
id3tag.genredesc = "Blues"
Case 1:
id3tag.genredesc = "Classic Rock"
Case 2:
id3tag.genredesc = "Country"
Case 3:
id3tag.genredesc = "Dance"
Case 4:
id3tag.genredesc = "Disco"
Case 5:
id3tag.genredesc = "Funk"
Case 6:
id3tag.genredesc = "Grunge"
Case 7:
id3tag.genredesc = "Hip-Hop"
Case 8:
id3tag.genredesc = "Jazz"
Case 9:
id3tag.genredesc = "Metal"
Case 10:
id3tag.genredesc = "New Age"
Case 11:
id3tag.genredesc = "Oldies"
Case 12:
id3tag.genredesc = "Other"
Case 13:
id3tag.genredesc = "Pop"
Case 14:
id3tag.genredesc = "R&B"
Case 15:
id3tag.genredesc = "Rap"
Case 16:
id3tag.genredesc = "Reggae"
Case 17:
id3tag.genredesc = "Rock"
Case 18:
id3tag.genredesc = "Techno"
Case 19:
id3tag.genredesc = "Industrial"
Case 20:
id3tag.genredesc = "Alternative"
Case 21:
id3tag.genredesc = "Ska"
Case 22:
id3tag.genredesc = "Death Metal"
Case 23:
id3tag.genredesc = "Pranks"
Case 24:
id3tag.genredesc = "Soundtrack"
Case 25:
id3tag.genredesc = "Euro-Track"
Case 26:
id3tag.genredesc = "Ambient"
Case 27:
id3tag.genredesc = "Trip-Hop"
Case 28:
id3tag.genredesc = "Vocal"
Case 29:
id3tag.genredesc = "Jazz+Funk"
Case 30:
id3tag.genredesc = "Fusion"
Case 31:
id3tag.genredesc = "Trance"
Case 32:
id3tag.genredesc = "Classical"
Case 33:
id3tag.genredesc = "Instrumental"
Case 34:
id3tag.genredesc = "Acid"
Case 35:
id3tag.genredesc = "House"
Case 36:
id3tag.genredesc = "Game"
Case 37:
id3tag.genredesc = "Sound Clip"
Case 38:
id3tag.genredesc = "Gospel"
Case 39:
id3tag.genredesc = "Noise"
Case 40:
id3tag.genredesc = "AlternRock"
Case 41:
id3tag.genredesc = "Bass"
Case 42:
id3tag.genredesc = "Soul"
Case 43:
id3tag.genredesc = "Punk"
Case 44:
id3tag.genredesc = "Space"
Case 45:
id3tag.genredesc = "Meditative"
Case 46:
id3tag.genredesc = "Instrumental Pop"
Case 47:
id3tag.genredesc = "Instrumental Rock"
Case 48:
id3tag.genredesc = "Ethnic"
Case 49:
id3tag.genredesc = "Gothic"
Case 50:
id3tag.genredesc = "Darkwave"
Case 51:
id3tag.genredesc = "Techo-Industrial"
Case 52:
id3tag.genredesc = "Electronic"
Case 53:
id3tag.genredesc = "Pop-Folk"
Case 54:
id3tag.genredesc = "Eurodance"
Case 55:
id3tag.genredesc = "Dream"
Case 56:
id3tag.genredesc = "Southern Rock"
Case 57:
id3tag.genredesc = "Comedy"
Case 58:
id3tag.genredesc = "Cult"
Case 59:
id3tag.genredesc = "Gangsta"
Case 60:
id3tag.genredesc = "Top 40"
Case 61:
id3tag.genredesc = "Christian Rap"
Case 62:
id3tag.genredesc = "Pop/Funk"
Case 63:
id3tag.genredesc = "Jungle"
Case 64:
id3tag.genredesc = "Native American"
Case 65:
id3tag.genredesc = "Cabaret"
Case 66:
id3tag.genredesc = "New Wave"
Case 67:
id3tag.genredesc = "Psychadelic"
Case 68:
id3tag.genredesc = "Rave"
Case 69:
id3tag.genredesc = "Showtunes"
Case 70:
id3tag.genredesc = "Trailer"
Case 71:
id3tag.genredesc = "Lo-Fi"
Case 72:
id3tag.genredesc = "Tribal"
Case 73:
id3tag.genredesc = "Acid Punk"
Case 74:
id3tag.genredesc = "Acid Jazz"
Case 75:
id3tag.genredesc = "Polka"
Case 76:
id3tag.genredesc = "Retro"
Case 77:
id3tag.genredesc = "Musical"
Case 78:
id3tag.genredesc = "Rock & Roll"
Case 79:
id3tag.genredesc = "Hard Rock"
End Select
End Sub