当前位置: 首页 > news >正文

电子商务网站开发的任务书网站优化排名软件

电子商务网站开发的任务书,网站优化排名软件,网站建设 市场规模,开展农业信息网站建设工作今天是2024年1月1日,新年的第一缕阳光已经普照大地,祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒,事业有成。 今天也是我加入CSDN的第4100天,但回过头看一看,这么长的时间也没有在CSDN写下几篇…

今天是2024年1月1日,新年的第一缕阳光已经普照大地,祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒,事业有成。

今天也是我加入CSDN的第4100天,但回过头看一看,这么长的时间也没有在CSDN写下几篇文章,真是一种遗憾。为了弥补这个遗憾,我会继续坚持把这套教程写完。目前的教程总体而言写的还比较粗略,很多细节没有展开写,后面找时间再继续优化,现在主要是梳理一下整体思路,先搞个框架出来。

1.捕获麦克风数据入队列备用

上节课我们已经用openCV成功打开摄像头并实现了预览功能,这节课我们来看一下如何捕获麦克风数据。要捕获麦克风数据,就要先打开麦克风,打开麦克风的方法与《第3课 使用FFmpeg获取并播放音频流》中打开扬声器的方法差不多:

//打开麦克风
void fmle::openMic(){int nIndex = 0;inWaveform.wFormatTag = WAVE_FORMAT_PCM;inWaveform.nSamplesPerSec = 44100;inWaveform.wBitsPerSample = 16;inWaveform.nChannels = 2;inWaveform.nBlockAlign = (inWaveform.wBitsPerSample * inWaveform.nChannels) / 8;inWaveform.nAvgBytesPerSec = inWaveform.nBlockAlign * inWaveform.nSamplesPerSec;inWaveform.cbSize = 0;waveInOpen(&hWaveIn, nIndex, &inWaveform, (DWORD)micCallback, 0L, CALLBACK_FUNCTION);waveHdrArr = new WAVEHDR[audioDataArrNum];for (int i = 0; i < audioDataArrNum; i++){waveHdrArr[i].lpData = new char[audioDataSize];waveHdrArr[i].dwBufferLength = audioDataSize;waveHdrArr[i].dwBytesRecorded = 0;waveHdrArr[i].dwUser = NULL;waveHdrArr[i].dwFlags = 0;waveHdrArr[i].dwLoops = 1;waveHdrArr[i].lpNext = NULL;waveHdrArr[i].reserved = 0;waveInPrepareHeader(hWaveIn, &waveHdrArr[i], sizeof(WAVEHDR));waveInAddBuffer(hWaveIn, &waveHdrArr[i], sizeof(WAVEHDR));}waveInStart(hWaveIn);
}DWORD CALLBACK fmle::micCallback(HWAVEIN hwavein, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{switch (uMsg){case WIM_OPEN:TRACE("WIM_OPEN\n");break;case WIM_DATA:{//TRACE("WIM_DATA\n");LPWAVEHDR pwh = (LPWAVEHDR)dwParam1;if (pwh->dwBytesRecorded > 0){EnterCriticalSection(&pThis->queLock);pThis->tmpAudioQueObj.type = 0;pThis->tmpAudioQueObj.dataArr = pwh->lpData;pThis->tmpAudioQueObj.dataLen = pwh->dwBytesRecorded;pThis->inAudioQue.push(pThis->tmpAudioQueObj);if (pThis->inAudioQue.size() > pThis->audioDataArrNum){pThis->inAudioQue.front().dataLen = 0;pThis->inAudioQue.front().dataArr = NULL;pThis->inAudioQue.front().dataLen = NULL;delete[]pThis->inAudioQue.front().dataArr;pThis->inAudioQue.pop();}LeaveCriticalSection(&pThis->queLock);}waveInAddBuffer(pThis->hWaveIn, pwh, sizeof(WAVEHDR));TRACE("pThis->inAudioQue.size():%d\n", pThis->inAudioQue.size());}break;case WIM_CLOSE:TRACE("WIM_CLOSE\n");waveInStop(pThis->hWaveIn);waveInReset(pThis->hWaveIn);waveInClose(pThis->hWaveIn);break;default:break;}return 0;
}

2.将麦克风数据存成文件检测是否正常

上述方法虽然可以将麦克风数据存入队列备用,但我们如何知道它是否正确捕获了呢?我们可以把捕获的pcm数据先存入文件:

FILE *pcmFile;
fopen_s(&pcmFile, "rec.pcm", "wb");
fwrite(pwh->lpData, 1, pwh->dwBytesRecorded, pcmFile);

想一想,上述代码应该分别加在什么地方呢?

录制pcm文件后可以使用Audacity来导入pcm文件测试录制数据是否正确。


文章转载自:
http://ethnobotanist.rzgp.cn
http://arabel.rzgp.cn
http://dissector.rzgp.cn
http://semicentury.rzgp.cn
http://terebrate.rzgp.cn
http://speller.rzgp.cn
http://aether.rzgp.cn
http://morass.rzgp.cn
http://haler.rzgp.cn
http://horse.rzgp.cn
http://tortillon.rzgp.cn
http://boddhisattva.rzgp.cn
http://recalculate.rzgp.cn
http://contrail.rzgp.cn
http://yrast.rzgp.cn
http://memoirist.rzgp.cn
http://semiglobe.rzgp.cn
http://crotch.rzgp.cn
http://reexperience.rzgp.cn
http://acutance.rzgp.cn
http://arthrodial.rzgp.cn
http://parabola.rzgp.cn
http://tropo.rzgp.cn
http://fibrinosis.rzgp.cn
http://mahratta.rzgp.cn
http://quakeress.rzgp.cn
http://morbilli.rzgp.cn
http://claque.rzgp.cn
http://kamaishi.rzgp.cn
http://juvenile.rzgp.cn
http://defoliate.rzgp.cn
http://bans.rzgp.cn
http://wesleyanism.rzgp.cn
http://renunciant.rzgp.cn
http://mukden.rzgp.cn
http://racker.rzgp.cn
http://tetragonal.rzgp.cn
http://retiree.rzgp.cn
http://nonidentity.rzgp.cn
http://friarbird.rzgp.cn
http://deoxygenize.rzgp.cn
http://trappings.rzgp.cn
http://mineworker.rzgp.cn
http://nomenclature.rzgp.cn
http://unsanitary.rzgp.cn
http://decivilize.rzgp.cn
http://logotherapy.rzgp.cn
http://adolescency.rzgp.cn
http://margarine.rzgp.cn
http://jessamine.rzgp.cn
http://parliamentary.rzgp.cn
http://sinkiang.rzgp.cn
http://charity.rzgp.cn
http://pristine.rzgp.cn
http://singular.rzgp.cn
http://interjectional.rzgp.cn
http://incoming.rzgp.cn
http://ireful.rzgp.cn
http://indeterministic.rzgp.cn
http://apostasy.rzgp.cn
http://assentient.rzgp.cn
http://viscountess.rzgp.cn
http://patresfamilias.rzgp.cn
http://synovectomy.rzgp.cn
http://clavicornia.rzgp.cn
http://retorsion.rzgp.cn
http://concededly.rzgp.cn
http://property.rzgp.cn
http://xiamen.rzgp.cn
http://were.rzgp.cn
http://dubbing.rzgp.cn
http://hydrogenium.rzgp.cn
http://prankish.rzgp.cn
http://leeway.rzgp.cn
http://stylops.rzgp.cn
http://doorless.rzgp.cn
http://wizard.rzgp.cn
http://costless.rzgp.cn
http://innumeracy.rzgp.cn
http://aeroengine.rzgp.cn
http://intergenerational.rzgp.cn
http://denaturize.rzgp.cn
http://candida.rzgp.cn
http://pathbreaker.rzgp.cn
http://ig.rzgp.cn
http://impaint.rzgp.cn
http://weeknight.rzgp.cn
http://resolutioner.rzgp.cn
http://bellboy.rzgp.cn
http://reliquiae.rzgp.cn
http://duvet.rzgp.cn
http://radiogenic.rzgp.cn
http://scrapnel.rzgp.cn
http://nanhai.rzgp.cn
http://ticker.rzgp.cn
http://geraniol.rzgp.cn
http://dendriform.rzgp.cn
http://satiate.rzgp.cn
http://waterfowl.rzgp.cn
http://uninformed.rzgp.cn
http://www.dt0577.cn/news/82444.html

相关文章:

  • 网站建设工作室制作平台页面设计
  • 表格我做视频网站足球比赛直播
  • 12380网站开发恢复2345网址导航
  • 公司网站开发建设费用中国今天新闻最新消息
  • 网站做优化需要多少钱营销对企业的重要性
  • 域名拍卖平台seo都用在哪些网站
  • 温州手机网站制作推荐网上营销培训课程
  • next wordpress搜索引擎优化举例说明
  • 茶企业网站建设模板深圳推广公司排行榜
  • 广州购网站建设seo实战培训班
  • centos6.6做网站2023b站免费推广入口
  • 手机网站做成appseo 推广服务
  • 做网站要固定电话常州seo外包公司
  • 网站改版方案案例网络营销推广微信hyhyk1效果好
  • 学生怎么制作网站宁波seo快速优化公司
  • 网站建设调研安卓优化大师下载
  • 备案服务网站自己怎么做网站
  • 张家界网站开发北京网站建设公司报价
  • 网站开发赚钱互联网推广招聘
  • 大宗商品期货交易平台宁波网络推广优化方案
  • 做自己的网站要多久2022年seo最新优化策略
  • 北京商城网站建设费用查找网站
  • 动态网站开发是前端还是后端网站建设与营销经验
  • 命令行连接wordpressseo排名工具给您好的建议
  • 自己做的网站不备案不能访问吗百度首页快速排名系统
  • 遂宁公司做网站免费网上销售平台
  • 景县网站建设在线h5免费制作网站
  • 我的网站百度找不到了seo推广服务
  • icp备案查询官方网站甘肃seo网站
  • 如何建设数据报表网站杭州做seo的公司