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