powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
5 сообщений из 5, страница 1 из 1
Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
    #38101967
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну т.е мне для телефонии годится только:

Код: vbnet
1.
2.
3.
4.
  PCM
  Sample Frequency: 8,000kHz
  Sample Size: 8bits
  Channels: 1 (Mono)

либо
Код: vbnet
1.
2.
3.
4.
  PCM
  Sample Frequency: 8,000kHz
  Sample Size: 16bits
  Channels: 1 (Mono)



(без вариантов).

Задача простая: есть WAV файл, но у него в свойствах чего-то другое, например:
Код: vbnet
1.
2.
3.
4.
  Microsoft ADPCM
  Sample Frequency: 22,000kHz
  Sample Size: 4bits
  Channels: 1 (Mono)


Как его тупо преобразовать в то чего надо?
Через API (читай через VB6).
Подозреваю что это возможно штатными функциями системы (аналогично тому как можно сохранять TIFF через GDI с разными компрессиями, разрешением и т.п. накладывая фильтры).
Ручками это делается программой "Звукозапись".

Задача посложнее: есть Audio файл ХЗ формата известного системе формата (ну там midi, mp3 и тд и тп). Надо на выходе получить wav нужного формата. (ну по принципу как картинка открывается и сохраняется в BMP, TIFF, GIF итд)

Дайте идею/направление мысли/ ключевые слова-понятия для поиска.

Естественно смотрю сюда:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743586(v=vs.85).aspx
но пока ничего не соображу.
...
Рейтинг: 0 / 0
Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
    #38102194
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
    #38102291
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 VB6 - ACM (e.g. WAV/MP3 conversion)

acm. zip 38.5 KB
Что-то нерабочий какой-то код.
То вылетает, то конвертирует в какую-то ерунду на "неправильной скорости воспроизведения" и т.п.
Даже PCM_to_PCM нормально не получается.

Думается мне, что надо переть откуда-нибудь рабочую command prompt утилиту, кот. этот ACM использует.
Где б взять.
Я так понимаю при подсовывании произвольного audio файла на вход,
ACM тупо читает формат
Код: vbnet
1.
2.
3.
4.
5.
    ' get fmt Chunk from Input
    With GetWavChunkPos(txtInp, "fmt ")
        Get #FFIn, .Start + 1, WFXIn
        WFXIn.cbSize = 0
    End With



Надо задать требуемый формат:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
    With WFXOut
      .wFormatTag = WAVE_FORMAT_PCM
      .nChannels = 1
      .wBitsPerSample = 8
      .nSamplesPerSec = 8000
      .nBlockAlign = .nChannels * .wBitsPerSample / 8
      .nAvgBytesPerSec = .nSamplesPerSec * .nBlockAlign
      .cbSize = 0
    End With




А дальше ACM ищет кодек (декодер) для формата этого файла и при наличии кодека в системе автоматически перегоняет исходный bWFXIn в целевой bWFXOut.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    ' create the stream
    ' because we havn't selected a codec to do the job,
    ' the ACM will automatically search for one which can do it
    If Not acm.CreateStream(0, bWFXIn, bWFXOut, ACM_STREAMOPENF_NONREALTIME) Then
        MsgBox "Couldn't create the stream", vbExclamation
        Exit Sub
    End If



Остается этот стрим словить в буфера и записать в файл, наляпав туда же соотв. заголовок "fmt Chunk".
Или надо разбираться, или нужен другой рабочий пример.
...
Рейтинг: 0 / 0
Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
    #38102585
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Якобы есть некий пример (на C++)
то ли в каком-то очень старом SDK, то ли на каком-то старом диске msdn.

http://www.vbforums.com/showthread.php?65614-Audio-Compression-Manager

I found a terrific sample on the MSDN cd for converting wave files via ACM (Audio Compression Manager).
For example converting from PCM to IMA ADPCM and vice versa.
Unfortunately this was for Visual C++, and although it works exactly how I want it to,

http://www.itlisting.org/1-windows-media/da3dcdace29be114.aspx
MS has a sample that illustrates usage
of the ACM in the Win32 SDK at
\mssdk\samples\graphics\audio\acmapp

М.б. у кого есть эти диски и не против поделиться?

Думаю что вот это

http://cdserv1.wbut.ac.in/81-203-2165-0/msdn_vcb/samples/vc98/sdk/graphics/audio/acmapp/
Но не знаю как скачать.
...
Рейтинг: 0 / 0
Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
    #38102775
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Думаю что вот это

http://cdserv1.wbut.ac.in/81-203-2165-0/msdn_vcb/samples/vc98/sdk/graphics/audio/acmapp/
Но не знаю как скачать.
Оно, скачал по одному файлу -скомпилировал в VC++ 6.0 , работает - но очень эти API заумные, чтоб VB-шный пример что привел выше пытаться исправлять.

Пошел по другому пути.
Дмитрий77Думается мне, что надо переть откуда-нибудь рабочую command prompt утилиту, кот. этот ACM использует.
Где б взять.
Упер, скорее всего там ACM и не используется.
SoX - Sound eXchange
Она еще и mp3 в wav конвертирует если правильную libmad.dll нарыть.

Код: vbnet
1.
Shell (sox.exe %1 -c 1 -b 16 -r 8k test.wav)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конвертация WAV в требуемый подформат (Sample Frequency, Sample Size)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]