CAPTURAR AUDIO bajo win32
Publicado por Alex (1 intervención) el 29/10/2002 04:35:29
Necesito saber como capturar audio de la entrada de micro para un programa.
Valora esta pregunta


0



#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib, "winmm.lib")
#define BUFFER_SIZE 44100 // Tamaño del buffer para la capturavoid CALLBACK waveInProc(HWAVEIN hwi, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) {
if (uMsg == WIM_DATA) {
// Aquí puedes procesar los datos de audio capturadosprintf("Datos de audio capturados.\n");
}}int main() {
HWAVEIN hWaveIn;
WAVEFORMATEX wfx;
WAVEHDR waveHdr;
char buffer[BUFFER_SIZE];
// Configurar el formato de audiowfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 1; // Mono
wfx.nSamplesPerSec = 44100; // Frecuencia de muestreo
wfx.wBitsPerSample = 16; // Bits por muestra
wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample) / 8;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
// Abrir el dispositivo de entrada de audioif (waveInOpen(&hWaveIn, WAVE_MAPPER, &wfx, (DWORD_PTR)waveInProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
printf("Error al abrir el dispositivo de entrada de audio.\n");
return 1;
} // Preparar el buffer para la capturawaveHdr.lpData = buffer;
waveHdr.dwBufferLength = BUFFER_SIZE;
waveHdr.dwFlags = 0;
waveHdr.dwLoops = 0;
waveInPrepareHeader(hWaveIn, &waveHdr, sizeof(WAVEHDR));
waveInAddBuffer(hWaveIn, &waveHdr, sizeof(WAVEHDR));
// Iniciar la captura de audiowaveInStart(hWaveIn);
printf("Capturando audio... Presiona Enter para detener.\n");
getchar(); // Esperar a que el usuario presione Enter
// Detener la capturawaveInStop(hWaveIn);
waveInUnprepareHeader(hWaveIn, &waveHdr, sizeof(WAVEHDR));
waveInClose(hWaveIn);
printf("Captura de audio finalizada.\n");
return 0;
}gcc -o audio_capture audio_capture.c -lwinmm
./audio_capture
