资源简介
用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\li
文件 2656 2014-06-16 00:53 pcmrecord\Debug\pcmrecord.tlog\li
文件 376 2014-06-16 00:53 pcmrecord\Debug\pcmrecord.tlog\li
文件 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个文件信息
- 上一篇:《数据结构题集C语言版》严蔚敏,吴伟民高清晰pdf版
- 下一篇:PDFDemo和资料
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- STM32红外检测有人开始录音,并播放录
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论