• 大小: 653KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: C/C++
  • 标签:

资源简介

这是本人花费近两周时间的成果,纯录制mp3格式,也是我公司大型项目的一部分技术,现分享出来,希望能给正在研究这方面技术的带来帮助,xp和win7上录音有很大区别,也许搜索会发现有许多的录音源代码,但我想说的是还真没有能同时在xp、win7都通过的,至少本人是找了N个,下了N个,也没找到。本人发的在xp、win7上通过(vista上没测试,应该也能过)。

资源截图

代码片段和文件信息

//---------------------------------------------------------------------------
#include “stdafx.h“
#include 
#pragma hdrstop

#include “AudioCap.h“

//---------------------------------------------------------------------------
#pragma package(smart_init)

#pragma comment(lib“winmm.lib“)


CAudioCap::CAudioCap(char *NombreDWORD FrecMuestreoWORD Resolucion)
{
  m_Buffer=NULL;
  m_TamBuffer=4192;

  //Crea el Objeto WaveFile.
  m_WaveFile=new CWaveFile(NombreFrecMuestreoResolucionm_TamBuffer);

  //Abre el dispositivo de entrada.
  m_Format.wFormatTag=WAVE_FORMAT_PCM;
  m_Format.nChannels=1;
  m_Format.nSamplesPerSec=FrecMuestreo;
  m_Format.wBitsPerSample=Resolucion;
  m_Format.nBlockAlign=m_Format.nChannels*m_Format.wBitsPerSample/8;
  m_Format.nAvgBytesPerSec=m_Format.wBitsPerSample*m_Format.nBlockAlign;

  //Para CALLBACK.
  //Abre el dispositivo.
  m_hr=waveInOpen(&m_WaveIn
                  WAVE_MAPPER
                  &m_Format
                  (DWORD)(VOID *)waveInProc
                  0
                  CALLBACK_FUNCTION);

  if(m_hr!=MMSYSERR_NOERROR)
    throw(“No se puede abrir el dispositivo de entrada de audio“);
}


//Cierra el dispositivo de captura de Audio y el fichero WAV.
CAudioCap::~CAudioCap()
{
  //   UIDADOOOOO!!!!!!
  // Esta llamada hay que hacerla en Windows 98 pero NO EN WINDOWS 2000!!!!!!!!!
  //Marca cualquier Buffer pendiente como “DONE“.
  //waveInReset(m_WaveIn);

  //Cierra el Dispositivo de Captura de Audio.
  waveInClose(m_WaveIn);

  free(m_Buffer);

  delete m_WaveFile;
}

//El driver de captura llama a esta funci髇 cuando ha completado el buffer con los datos.
void CALLBACK CAudioCap::waveInProc(HWAVEIN hwi UINT msg DWORD dwInstance DWORD Param1 DWORD Param2)
{
  WAVEHDR   *WaveStruct;
  CWaveFile *File;
  HWAVEIN   WaveIn;
  DATACALLBACK *Datos;

  switch(msg)
    {
     //Mensaje enviado por el Driver cuando ha terminado de rellenar el Buffer.
     //lParam es un puntero a WAVEHDR.
     //El dwUser apunta a los datos de DATACALLBACK.
     //El miembro dwBytesRecorded indica cuantos bytes se han grabado en el Buffer.
     case MM_WIM_DATA: //Se toma la estructura WAVEDHR.
                       WaveStruct=(WAVEHDR *)Param1;

                       //Se toma el nombre del fichero y el handle del disp. de entrad.
                       Datos=(DATACALLBACK *)WaveStruct->dwUser;

                       //Se a馻den los datos al fichero WAV.
                       Datos->WaveFile->AddSample((byte *)WaveStruct->lpData);

                       //Env韆 otro buffer al driver de captura.
                       //Se reutiliza el mismo Buffer.
                       waveInUnprepareHeader(Datos->WaveInWaveStructsizeof(WAVEHDR));
                       waveInPrepareHeader(Datos->WaveInWaveStructsizeof(WAVEHDR));
                       waveInAddBuffer(Datos->WaveInWaveStructsizeof(WAVEHDR));
              

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1532  2002-11-12 20:15  RecordTest\audevcod.h

     文件       4279  2011-08-23 11:28  RecordTest\AudioCap.cpp

     文件        979  2001-04-20 12:21  RecordTest\AudioCap.h

     文件      31995  2011-09-16 12:32  RecordTest\AudioPlayRec.cpp

     文件       5234  2011-09-16 14:16  RecordTest\AudioPlayRec.h

     文件       7657  2003-05-18 22:15  RecordTest\BladeMP3EncDLL.h

     文件       3214  2011-08-25 14:32  RecordTest\DShow.h

     文件        819  2006-01-15 02:29  RecordTest\IVolume.h

     文件     249856  2006-01-13 23:40  RecordTest\lame_enc.dll

     文件       9471  2011-10-18 09:29  RecordTest\Mixer.cpp

     文件          0  2011-08-24 15:16  RecordTest\Mixer.cpp.bak

     文件       1204  2011-06-29 13:50  RecordTest\Mixer.h

     文件          0  2011-08-24 15:16  RecordTest\Mixer.h.bak

     文件     430592  2008-11-16 18:23  RecordTest\MP3Enc.dll

     文件       5845  2008-10-19 17:45  RecordTest\MP3Enc.h

     文件       6502  2008-11-16 18:23  RecordTest\MP3Enc.lib

     文件      15667  2011-08-26 11:08  RecordTest\NewMixer.cpp

     文件         21  2011-08-25 17:55  RecordTest\NewMixer.cpp.bak

     文件        877  2011-08-26 11:00  RecordTest\NewMixer.h

     文件        799  2011-08-25 17:54  RecordTest\NewMixer.h.bak

     文件      16623  2011-08-26 14:51  RecordTest\old\Mixer.cpp

     文件       1488  2011-08-26 11:35  RecordTest\old\Mixer.h

     文件     430592  2008-11-16 18:23  RecordTest\old\MP3Enc.dll

     文件       5845  2008-10-19 17:45  RecordTest\old\MP3Enc.h

     文件       6502  2008-11-16 18:23  RecordTest\old\MP3Enc.lib

     文件      12067  2011-08-24 16:37  RecordTest\old\Record.cpp

     文件        596  2011-08-24 16:50  RecordTest\old\Record.h

     文件       3651  2011-08-22 09:22  RecordTest\ReadMe.txt

     文件       9387  2011-11-29 16:17  RecordTest\Record.cpp

     文件        807  2011-11-29 16:17  RecordTest\Record.h

............此处省略36个文件信息

评论

共有 条评论

相关资源