91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-29
  • 語言: C/C++
  • 標(biāo)簽: 錄音技術(shù)??

資源簡(jiǎn)介

利用C++實(shí)現(xiàn)音頻錄音功能,定義音頻頭的數(shù)據(jù)格式,通道數(shù)為2,通道字節(jié)數(shù)16為錄的聲音更為清晰,無雜音。

資源截圖

代碼片段和文件信息

#include?“SoundRecord.h“
#include?



CSoundRecord::CSoundRecord(void):m_bPlay(false)
?m_Time(0)
?m_hOPFile(nullptr)
{
m_hWaveIn=NULL;
ZeroMemory(&m_stWFEXsizeof(WAVEFORMATEX));
ZeroMemory(m_stWHDRMAX_BUFFERS*sizeof(WAVEHDR));
}


CSoundRecord::~CSoundRecord(void)
{
}

bool?CSoundRecord::initDevice()
{
MMRESULT?mRes=0;
int?nT1=0;
//填充數(shù)據(jù)頭結(jié)構(gòu)體
m_stWFEX.nSamplesPerSec?=??m_samplefreq;
m_stWFEX.nAvgBytesPerSec?=? ?m_samplefreq?*?m_channels?*?m_channelbits?/?8;//每秒所需字節(jié)數(shù)
m_stWFEX.nBlockAlign?=? ?m_channels?*?m_channelbits?/?8;//一個(gè)采樣的字節(jié)數(shù)
m_stWFEX.nChannels?=?m_channels;?//1為單通道,2為雙通道
m_stWFEX.wFormatTag?=??0x0001;//編碼方式
m_stWFEX.wBitsPerSample?=? m_channelbits;//16位,即設(shè)置PCM的方式為16位立體聲(雙通道)
m_stWFEX.cbSize?=?sizeof(WAVEFORMATEX);

mRes=waveInOpen(&m_hWaveInWAVE_MAPPER&m_stWFEX(DWORD_PTR)waveInProc(DWORD_PTR)thisCALLBACK_FUNCTION);
if(mRes!=MMSYSERR_NOERROR)
{
std::cout?< return?false;
}
//新建存儲(chǔ)文件
//設(shè)置保存的音頻文件名稱
SYSTEMTIME?sysTime;?
GetLocalTime(?&sysTime?);?
char?fileName[512];
memset(fileName0512);
sprintf_s(fileName“%d_%d_%d_%d_%d_%d.wav“sysTime.wYearsysTime.wMonthsysTime.wDaysysTime.wHoursysTime.wMinutesysTime.wSecond);
ZeroMemory(&m_stmmIFsizeof(MMIOINFO));
//轉(zhuǎn)換?stringTolpwstr
m_FileName?=?fileName;
std::wstring?widstr;???
widstr?=?std::wstring(m_FileName.begin()?m_FileName.end());??
LPWSTR?ff?=?(LPWSTR)widstr.c_str();

m_hOPFile=mmioOpen(ff&m_stmmIFMMIO_WRITE?|?MMIO_CREATE);
if(m_hOPFile==NULL)
{
std::cout?< return?false;
}
ZeroMemory(&m_stckOutRIFFsizeof(MMCKINFO));
m_stckOutRIFF.fccType?=?mmioFOURCC(‘W‘?‘A‘?‘V‘?‘E‘);?
mRes=mmioCreateChunk(m_hOPFile?&m_stckOutRIFF?MMIO_CREATERIFF);
if(mRes!=MMSYSERR_NOERROR)
{
?std::cout?< }
ZeroMemory(&m_stckOutsizeof(MMCKINFO));
m_stckOut.ckid?=?mmioFOURCC(‘f‘?‘m‘?‘t‘?‘?‘);
m_stckOut.cksize?=?sizeof(m_stWFEX);
mRes=mmioCreateChunk(m_hOPFile?&m_stckOut?0);
if(mRes!=MMSYSERR_NOERROR)
{
std::cout?< }
nT1=mmioWrite(m_hOPFile?(HPSTR)?&m_stWFEX?sizeof(m_stWFEX));
if(nT1!=sizeof(m_stWFEX))
{
std::cout?< }
mRes=mmioAscend(m_hOPFile?&m_stckOut?0);
if(mRes!=MMSYSERR_NOERROR)
{
std::cout?< }
m_stckOut.ckid?=?mmioFOURCC(‘d‘?‘a(chǎn)‘?‘t‘?‘a(chǎn)‘);
mRes=mmioCreateChunk(m_hOPFile?&m_stckOut?0);
if(mRes!=MMSYSERR_NOERROR)
{
std::cout?< }
}

void?CSoundRecord::closeDevice()
{
MMRESULT?mRes=0;

if(m_hWaveIn)
{
unPrepareBuffers();
mRes=waveInClose(m_hWaveIn);
}
if(m_hOPFile)
{
mRes=mmioAscend(m_hOPFile?&m_stckOut?0);
if(mRes!=MMSYSERR_NOERROR)
{
std::cout?< return?;
}
mRes=mmioAscend(m_hOPFile?&m_stckOutRIFF?0);
if(mRes!=MMSY

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????6499??2018-08-30?15:49??sound\SoundRecord.cpp

?????文件???????1011??2018-08-30?15:51??sound\SoundRecord.h

?????目錄??????????0??2018-08-30?15:53??sound

-----------?---------??----------?-----??----

?????????????????7510????????????????????3


評(píng)論

共有 條評(píng)論

相關(guān)資源