mfc怎么做录音程序

 我来答
葛肩胛骨
推荐于2016-10-23 · TA获得超过406个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:117万
展开全部
MFC多媒体开发
======================
高层音频接口:播放声音资源/文件
调用MCI::Media Control Interface 和Api::MessageBeep,sndPlaySound,PlaySound
底层音频接口:数据采集
开发一般步骤:
检测音频设备->打开驱动程序->分配缓冲区->管理缓冲区->操作音频数据->释放缓冲区->关闭驱动程序.
SDK参考::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/multimed/htm/_win32_multimedia_functions.htm
多媒体控制两种方式可选:调API,执行命令.
MCI命令结构:
系统命令:直接由MCI解析,并由系统处理,与设备无关
通用命令:由设备驱动处理
可选命令:
扩展命令:
常用MCI命令:
MCI_OPEN,MCI_PLAY,MCI_RECORD,MCI_STATUS,MCI_SET,时间操作宏命令.
--------------------------------------------------------
视频开发:
Microsoft基于视频软件工作平台 VFW(Video For Windows,Avi标准),六个DLL
AVICAP.DLL,::视频采集函数
MSVIDEO.DLL,DrawLib函数,回放用
MCIAVI.DRV.MCI命令解析
AVIFILE.DLL,支持从标准IO访问AVI文件.
VCM,包含视频压缩/解码工具(CODEC)
ACM,针对AVI提供视频压缩/解码
MSDN::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/multimed/htm/_win32_video_for_windows.htm
视频媒体:图像,数字视频,
使用AVIFile操作 AVI文件步骤:
初始化AviFileInit->打开文件AviFileOpen->取文件信息AviFileInfo->打开数据流AviFileGetStream->获取数据流信息AviFileStreamInfo->操作数据流AviStream::Read,Write,ReadFormat,SetFormat等->关闭文件AviFileRelease->释放 AviFileExit;
AVI视频采集:AVICap:
MSDN::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/multimed/htm/_win32_video_capture.htm
AVI视频播放:DrawDib
MSDN::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/multimed/htm/_win32_drawdib.htm
AVI视频编解码:VCM::Video Compression Manager
MSDN::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/multimed/htm/_win32_video_compression_manager.htm
播放工具:ActiveMovie控件.
应用示例::MSDN::ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vcsample/html/dade0c5d-ddc8-4ceb-8a15-e58efd37af3e.htm

追问:
关于录音频的函数有哪些呢?谢谢
回答:
不好意思,有一个重要的函数没有列出,添加如下:
=====================================================
MCIERROR mciSendCommand(MCIDEVICEID wDeviceID, UINT uMsg, DWord dwFlags, DWORD dwParam);
第一个参数指定了设备标识,这个标识会在程序员打开MCI设备时由系统提供。第二个参数指定将如何控制设备,见后面MCI指令清单,其中有有关录音的指令。第三个参数为访问标识,第四个参数一般是一个数据结构,标识程序在访问MCI时要的一些信息。

  MCI的设备类型:
  设备描述 描述字符串 说明
  MCI_ALL_DEVICE_ID 所有设备
  MCI_DEVTYPE_ANIMATION Animation 动画设备
  MCI_DEVTYPE_CD_AUDIO Cdaudio CD音频
  MCI_DEVTYPE_DAT Dat 数字音频
  MCI_DEVTYPE_DIGITAL_VIDEO Digitalvideo 数字视频
  MCI_DEVTYPE_OTHER Other 未定义设备
  MCI_DEVTYPE_OVERLAY Overlay 重叠视频
  MCI_DEVTYPE_SCANNER Scanner 扫描仪
  MCI_DEVTYPE_SEQUENCER Sequencer MIDI 序列器
  MCI_DEVTYPE_VCR Vcr 合式录像机
  MCI_DEVTYPE_VIDEODISC Videodisc 激光视盘
  MCI_DEVTYPE_WAVEFORM_AUDIO waveaudio Wave 音频
MCI指令
MCI_BREAK设置中断键,缺省是”CTRL+BREAK"
MCI_CAPTURE抓取当前帧并存入指定文件,仅用于数字视频
MCI_CLOSE关闭设备
MCI_CONFIGURE弹出配置对话框,仅用于数字视频
MCI_COPY拷贝数据至剪贴板
MCI_CUE延时播放或录音
MCI_CUT删除数据
MCI_DELETE删除数据
MCI_ESCAPE仅用于激光视频
MCI_FREEZE将显示定格
MCI_GETDEVCAPS获取设备信息
MCI_INDEX当前屏幕显示与否,仅用于VCR设备
MCI_INFO获取字符串信息
MCI_LIST获取输入设备数量,支持数字视频和VCR设备
MCI_LOAD装入一个文件
MCI_MARK取消或做一个记号,与MCI_SEEK配套
MCI_MARK取消或做一个记号,与MCI_SEEK配套
MCI_MONITOR为数字视频指定报告设备
MCI_OPEN打开设备
MCI_PASTE粘帖数据
MCI_PAUSE暂停当前动作
MCI_PLAY播放
MCI_PUT设置源、目的和边框矩形
MCI_QUALITY定义设备缺省质量
MCI_RECORD开始录制
MCI_RESERVE分配硬盘空间
MCI_RESTORE拷贝一个bmp文件至帧缓冲
MCI_RESUME使一个暂停设备重新启动
MCI_SAVE保存数据
MCI_SEEK更改媒体位置
MCI_SET设置设备信息
MCI_SETAUDIO设置音量
MCI_SETTIMECODE启用或取消VCR设备的时间码
MCI_SETTUNER设置VCR设备频道
MCI_SETVIDEO设置video参数
MCI_SIGNAL在工作区上设置指定空间
MCI_STATUS获取设备信息
MCI_STEP使播放设备跳帧
MCI_STOP停止播放
MCI_SYSINFO返回MCI设备信息
MCI_UNDO取消操作
MCI_UNFREEZE使使用MCI_UNFREEZE的视频缓冲区恢复运动
MCI_UPDATE更新显示区域
MCI_WHERE获取设备裁减矩形
MCI_WINDOW指定图形设备窗口和窗口特性
其中比较常用的指令有MCI_OPEN、MCI_RECORD、MCI_CLOSE、MCI_PLAY、MCI_STOP、MCI_PAUSE、MCI_STATUS等等。

举例:
//关闭一个MCI设备
mciSendCommand(DeviceID, MCI_CLOSE, NULL, NULL);
//打开CD播放器
MCI_OPEN_PARMS mciOpen;
mciOpen.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO ;
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD)&mciOpen);
唯创智能
2024-05-10 广告
同时支持储存多段录音的录音IC有如下:WT2000/WTR030/WTR050系列录音芯片(当然,也有同等型号系列下的录音模块),用户选择,主要看录音时长的需求、是纯录音用还是录音/播放兼具,是要芯片还是要模块,看电路的一个设计需求。当然如... 点击进入详情页
本回答由唯创智能提供
归悦欣cf
2014-01-26 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1335万
展开全部
涉及内容还是比较多的,建议在网上下载一个例程好好分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
歪瑞顾K
2014-01-26 · TA获得超过2905个赞
知道大有可为答主
回答量:2731
采纳率:33%
帮助的人:2218万
展开全部
这个和MFC没关系,MFC不管windows上的多媒体相关

在windows上开发录音程序,有很多可选择的方式:

1、使用基本硬件接口,waveOut,waveIn。一个管播放,一个管录音。
2、使用Windows Media Player 插件(这种快被淘汰了,也不一定能用)。
3、使用DirectX(可以使用DirectShow和DirectSound)

个人推荐使用DirectSound,最方便也最简单,基本思路:

A,创建一个录音器对象:DirectSoundCaptureCreate8
B,设置录音器的缓存:CreateCaptureBuffer
C,绑定录音器到音频输入:麦克风,还是系统声音(声卡录音)
D,然后调用录音器的start函数
E,线程循环从录音器缓存里取数据,声音数据系统自动填充到缓存,你只负责取就可以了
F,调用录音器的stop函数。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式