資源簡介
用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和資料
評論
共有 條評論