模块中的代码----主要是定义Wave的音频格式和一些类模块中需要用到的Api函数
Public Type RIFF_HEADER
szRiffID As String * 4 'R','I','F','F'
dwRiffSize As Long
szRiffFormat As String * 4 'W','A','V','E'
End Type
'WAV的格式数据
Public Type WAVE_FORMAT
wFormatTag As Integer '记录着此声音的格式代号
wChannels As Integer '记录声音的频道数
dwSamplesPerSec As Long '记录每秒取样数,采样率(每秒样本数),表示每个通道的播放速度
dwAvgBytesPerSec As Long '记录每秒的数据量 波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小
wBlockAlign As Integer '记录区块的对齐单位,数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整
wBitsPerSample As Integer '记录每个取样所需的位元数 8位元时无声为128,16位元时为0才是无声,每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样
End Type
Public Type FMT_BLOCK
szFmtID As String * 4 'f','m','t',' '
dwFmtSize As Long
wav_Fmt As WAVE_FORMAT
End Type
'可选数据
Public Type FACT_BLOCK
szFactID As String * 4 'f','a','c','t'
dwFactSize As Long
data As Long
End Type
'实际数据
Public Type DATA_BLOCK
szDataID As String * 4 'd','a','t','a'
dwDataSize As Long
End Type
Public Type Wav_FILE
riff_hd As RIFF_HEADER
fmt_blk As FMT_BLOCK
'fact_blk As FACT_BLOCK
data_blk As DATA_BLOCK
End Type
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
(ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" _
(ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef SBuffer As Any, _
ByRef lBufferLength As Long, ByRef lIndex As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer
Public Declare Function InternetReadFileWavHdr Lib "wininet.dll" Alias "InternetReadFile" _
(ByVal hFile As Long, SBuffer As Wav_FILE, ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
类模块----根据网络路径(http)获取音频时间
Option Explicit
Public totalPlayTime As Long
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const HTTP_QUERY_CONTENT_LENGTH = 5
Function GetPlayFileInfo(ByVal pFile As String) As Boolean
On Error GoTo myErrHandler
Dim mFile As Long
Dim SBuffer As String * 1024
Dim FileLenth As Long
Dim BRead As Int