• 大小: 7.76MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-29
  • 语言: C/C++
  • 标签: C++  PCM音频  录音  

资源简介

用C++实现的音频录制工程,有需要的可以下载,本人做的编写和测试,有问题可以留言

资源截图

代码片段和文件信息

// pcmrecord.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include   
#include   
#pragma comment(lib “winmm.lib“)  

HWAVEIN hWaveIn;  //输入设备
WAVEFORMATEX waveform; //采集音频的格式,结构体
BYTE *pBuffer1;//采集音频时的数据缓存
WAVEHDR wHdr1; //采集音频时包含数据缓存的结构体

FILE *pf;

int _tmain(int argc _TCHAR* argv[])
{
HANDLE          wait;
waveform.wFormatTag = WAVE_FORMAT_PCM;//声音格式为PCM
waveform.nSamplesPerSec = 8000;//采样率,16000次/秒
waveform.wBitsPerSample = 16;//采样比特,16bits/次
waveform.nChannels = 1;//采样声道数,2声道
waveform.nAvgBytesPerSec = 16000;//每秒的数据率,就是每秒能采集多少字节的数据
waveform.nBlockAlign = 2;//一个块的大小,采样bit的字节数乘以声道数
waveform.cbSize = 0;//一般为0

wait = CreateEvent(NULL 0 0 NULL);
//使用waveInOpen函数开启音频采集
waveInOpen(&hWaveIn WAVE_MAPPER &waveform(DWORD_PTR)wait 0L CALLBACK_EVENT);

//建立两个数组(这里可以建立多个数组)用来缓冲音频数据
DWORD bufsize = 1024*100;//每次开辟10k的缓存存储录音数据
int i = 20;
fopen_s(&pf “录音测试.pcm“ “wb“);
while (i--)//录制20左右秒声音,结合音频解码和网络传输可以修改为实时录音播放的机制以实现对讲功能
{
pBuffer1 = new BYTE[bufsize];
wHdr1.lpData = (LPSTR)pBuffer1;
wHdr1.dwBufferLength = bufsize;
wHdr1.dwBytesRecorded = 0;
wHdr1.dwUser = 0;
wHdr1.dwFlags = 0;
wHdr1.dwLoops = 1;
waveInPrepareHeader(hWaveIn &wHdr1 sizeof(WAVEHDR));//准备一个波形数据块头用于录音
waveInAddBuffer(hWaveIn &wHdr1 sizeof (WAVEHDR));//指定波形数据块为录音输入缓存
waveInStart(hWaveIn);//开始录音
Sleep(1000);//等待声音录制1s
waveInReset(hWaveIn);//停止录音
fwrite(pBuffer1 1 wHdr1.dwBytesRecorded pf);
delete pBuffer1;
printf(“%ds  “ i);
}
fclose(pf);

waveInClose(hWaveIn);
return 0;
}



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

     文件      32256  2014-06-16 00:53  Debug\pcmrecord.exe

     文件     263688  2014-06-16 00:53  Debug\pcmrecord.ilk

     文件     633856  2014-06-16 00:53  Debug\pcmrecord.pdb

     文件    3080192  2014-06-15 17:25  ipch\pcmrecord-73a3e37c\pcmrecord-cd963aab.ipch

     文件    3080192  2014-06-16 00:42  ipch\pcmrecord-7c709f8a\pcmrecord-cd963aab.ipch

     文件    3080192  2014-06-11 14:13  ipch\pcmrecord-7d9ad14c\pcmrecord-cd963aab.ipch

     文件        685  2014-06-16 00:48  pcmrecord\Debug\pcmrecord.Build.CppClean.log

     文件       1356  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.log

     文件      34008  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.obj

     文件    1638400  2014-06-16 00:48  pcmrecord\Debug\pcmrecord.pch

     文件       1310  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\cl.command.1.tlog

     文件      20016  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\CL.read.1.tlog

     文件        730  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\CL.write.1.tlog

     文件       1110  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\link.command.1.tlog

     文件       2656  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\link.read.1.tlog

     文件        376  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\link.write.1.tlog

     文件        146  2014-06-16 00:53  pcmrecord\Debug\pcmrecord.tlog\pcmrecord.lastbuildstate

     文件      11249  2014-06-16 00:48  pcmrecord\Debug\stdafx.obj

     文件     510976  2014-06-16 00:53  pcmrecord\Debug\vc120.idb

     文件     225280  2014-06-16 00:53  pcmrecord\Debug\vc120.pdb

     文件       1861  2014-06-16 00:53  pcmrecord\pcmrecord.cpp

     文件       4537  2014-06-11 14:13  pcmrecord\pcmrecord.vcxproj

     文件       1316  2014-06-11 14:13  pcmrecord\pcmrecord.vcxproj.filters

     文件       1524  2014-06-11 14:13  pcmrecord\ReadMe.txt

     文件        215  2014-06-11 14:13  pcmrecord\stdafx.cpp

     文件        234  2014-06-11 14:13  pcmrecord\stdafx.h

     文件        236  2014-06-11 14:13  pcmrecord\targetver.h

     文件   29229056  2014-06-16 01:05  pcmrecord.sdf

     文件        973  2014-06-11 14:13  pcmrecord.sln

    ..A..H.     18944  2014-06-16 01:05  pcmrecord.v12.suo

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

评论

共有 条评论