'Этот код получает информацию о .wav-файле, такую как частота 'сэмплирования, моно/стерео и т.п. и заносит все это в структуру. Самое 'интересное, что этот пример не использует DirectSound, он вообще ничего не 'использует кроме внутренних функций VisualBasic. 'Информацию из .wav-файла программа добывает не с помощью каких-либо 'API, а основываясь на формате RIFF, просматривает заголовок файла и заносит 'содержащиеся там данные в понятную программисту структуру 'Это константы формата WAVE. Тип n, Mono/Stereo, 8/16 битное сэмплирование
'Типичный заголовок простого WAVE-файла в формате RIFF Private Type WAVInfo Riff_Format As Long chunk_size As Long ChunkID As Long fmt As Long Wave_Format As Integer Channels As Integer '0 = mono, 1 = stereo SamplesPerSecond As Long AverageBytesPerSecond As Long '11.025kHz, 22.05kHz, итп BlockAlign As Integer 'Размер блоков для низкоуровнего проигрывания End Type
'А вот и сама функция, получающая информацию Private Function GetWaveInfo(ByVal filename As String, ByRef w As WAVInfo) As Boolean Dim ff As Integer ff = FreeFile On Error GoTo ehandler Open filename For Binary Access Read As #ff On Error GoTo ehandler_fo Get #ff, , w Close #ff On Error GoTo ehandler If w.Riff_Format = RIFF_ID And w.ChunkID = RIFF_WAVE And w.fmt = RIFF_FMT Then GetWaveInfo = True Else GetWaveInfo = False End If Exit Function ehandler_fo: Close #ff ehandler: GetWaveInfo = False End Function
'Вот пример использования функции Private Sub Form_Click() Dim rinfo As WAVInfo Dim target As String
tarGet = "c:\windows\media\tada.wav" 'Замените на фаш файл If GetWaveInfo(tarGet, rinfo) Then MsgBox "Sample Rate" & rinfo.AverageBytesPerSecond 'Добавьте сюда вашу обработку полученной информации End If End Sub
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Получаем информацию о WAVE-файле", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!