Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593

Как получить звук от микрофона и записать в WAV формат

02.12.2017, 20:47. Показов 4739. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!! Может у кого есть ссылки на примеры как получить звук с микрофона и записать их в WAV формат?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2017, 20:47
Ответы с готовыми решениями:

Запись с микрофона в формат .wav
Добрый день! Задача такая нужен диктофон, который записывал бы в формате *.wav. Изначально я пробовал так: procedure...

Как записать звук с микрофона?
Как записать звук с микрофона в файл, пробовал так: private static extern int mciSendString(string lpstrCommand, string...

Как записать звук с микрофона и воспроизвести его?
Подскажите как записать звук с микрофона (можно в wav файл но желательно в буфер) и воспроизвести его?

5
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
02.12.2017, 21:22
Writing to a WAV File
0
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
02.12.2017, 22:07  [ТС]
decrement, Этот пример я так понимаю на DirectSound а мне надо на чистом WinApi.
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
03.12.2017, 14:43
Лучший ответ Сообщение было отмечено oleg rus как решение

Решение

Цитата Сообщение от oleg rus Посмотреть сообщение
а мне надо на чистом WinApi.
в константу second записываете сколько секунд нужно записать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
 
typedef struct {
    char RIFF [4];
    DWORD bytes;
    char WAVE [4];
    char fmt [4];
    int siz_wf;
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    char data [4];
    DWORD pcmbytes;
} WAVHEADER;
 
int main ()
{
    const int second = 5;
    
    const int SampleRate = 44100;
    const int N = SampleRate * 2 * second;
    short int buffer [N];
    
    WAVEFORMATEX wfex;
    wfex.wFormatTag        = WAVE_FORMAT_PCM;
    wfex.nChannels         = 2;
    wfex.wBitsPerSample    = 16;
    wfex.nSamplesPerSec    = SampleRate;
    wfex.nAvgBytesPerSec   = SampleRate * wfex.nChannels * wfex.wBitsPerSample / 8;
    wfex.nBlockAlign       = wfex.nChannels * wfex.wBitsPerSample / 8;
    wfex.cbSize            = 0;
    
    HWAVEIN hWaveIn;
    waveInOpen (&hWaveIn, WAVE_MAPPER, &wfex, 0L, 0L, WAVE_FORMAT_DIRECT);
    
    WAVEHDR WaveHdr;
    WaveHdr.lpData          = (LPSTR) buffer;
    WaveHdr.dwBufferLength  = N * 2;
    WaveHdr.dwBytesRecorded = 0;
    WaveHdr.dwUser          = 0L;
    WaveHdr.dwFlags         = 0L;
    WaveHdr.dwLoops         = 0L;
    waveInPrepareHeader (hWaveIn, &WaveHdr, sizeof (WAVEHDR));
    waveInAddBuffer (hWaveIn, &WaveHdr, sizeof (WAVEHDR));
    waveInStart (hWaveIn);
    while (waveInUnprepareHeader (hWaveIn, &WaveHdr, sizeof (WAVEHDR)) == WAVERR_STILLPLAYING);
    waveInClose (hWaveIn);
    
    WAVHEADER wh;
    memcpy (wh.RIFF, "RIFF", 4);
    memcpy (wh.WAVE, "WAVE", 4);
    memcpy (wh.fmt, "fmt ", 4);
    memcpy (wh.data, "data", 4);
    wh.siz_wf          = 16;
    wh.wFormatTag      = WAVE_FORMAT_PCM;
    wh.nChannels       = wfex.nChannels;
    wh.wBitsPerSample  = wfex.wBitsPerSample;
    wh.nSamplesPerSec  = SampleRate;
    wh.nAvgBytesPerSec = SampleRate * wh.nChannels * wh.wBitsPerSample / 8;
    wh.nBlockAlign     = wh.nChannels * wh.wBitsPerSample / 8;
    wh.bytes           = N * 2 + 36;
    wh.pcmbytes        = N * 2;
    
    HANDLE hFile = CreateFile ("audio.wav", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile)
    {
         DWORD dwWrite;
         WriteFile (hFile, &wh, sizeof (WAVHEADER), &dwWrite, NULL);
         WriteFile (hFile, WaveHdr.lpData, WaveHdr.dwBufferLength, &dwWrite, NULL);
         CloseHandle (hFile);
    }
    system ("pause");
    return 0;
}
1
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
03.12.2017, 18:38  [ТС]
decrement, Спасибо за код то что надо!!! И ещё есть один вопрос а как мне получить доступ к настройкам микрофона? И вообще мне интересна работа с микрофоном есть ссылки на примерчики?
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
03.12.2017, 18:58
Лучший ответ Сообщение было отмечено oleg rus как решение

Решение

Цитата Сообщение от oleg rus Посмотреть сообщение
есть ссылки на примерчики?
посмотрите здесь
Уменьшение чувствительности микрофона
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2017, 18:58
Помогаю со студенческими работами здесь

Как записать звук с микрофона с сохранением в файл
Как сделать диктовон? Как работать с микрофонам? Добавлено через 9 часов 41 минуту Что некто не знает? Как записывать звук?

Как записать звук из входа звуковой карты в wav-файл?
Необходимо записать звук из входа звуковой карты в wav-файл. Заранее благодарен всем ответившим.

Как на java получить с микрофона звук во flac формате?
Как на java получить с микрофона звук во flac формате?

Записать звук с микрофона в файл
sobuf - TmemoryStream; procedure TForm16.OnWaveMessage(var msg: TMessage); begin ...

Записать звук с микрофона в буфер
При выполнении pDSCBuffer1-&gt;Release() вылетает исключение (см. картинку) В чем проблема? #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru