9
Ноябрь
2009
Как получить длину WAV файла (в сек. или в сэмплах)
Как получить длину WAV файла (в сек. или в сэмплах)
Option Explicit
Enum LEN_FORMAT
frmSeconds = 0
frmSamples = 1
End Enum
Type RIFF_HEAD
riffFmt As String * 4
lenOfFileData As Long
End Type
Type WAVE_HEAD
waveFmt As String * 8
lenOfThunk As Long
format As Integer
channels As Integer
samplesPerSecond As Long
avgBytesPerSecond As Long
blockAlign As Integer
bitsPerSample As Integer
End Type
Type DATA_HEAD
dataStr As String * 4
lenOfThunk As Long
End Type
Public Function GetLenOfWaveFile(ByVal fileName As String, format As LEN_FORMAT) As Single
Dim riffHead As RIFF_HEAD
Dim waveHead As WAVE_HEAD
Dim dataHead As DATA_HEAD
ReadWaveHeader fileName, riffHead, waveHead, dataHead
If format = frmSeconds Then
GetLenOfWaveFile = (dataHead.lenOfThunk / waveHead.samplesPerSecond)
Else
GetLenOfWaveFile = dataHead.lenOfThunk
End If
End Function