设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> Visual C++ >> Windows环境下的麦克风录音系统(4)
精品推荐
Visual C++点击TOP10
·用WINSOCK实现聊天室的VC++程序设计
·利用mfc编写activex控件
·用vc实现生产者消费者问题
·DirectX8.0
·C/C++ 大量经典编程书籍下载
·VC快捷键大全
·CreateFileMapping的MSDN翻译和使用心得
·Windows环境下的麦克风录音系统
·挂钩Windows API
·如何开发OPC Server
编程开发点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·ASP.NET 程序中常用的三十三种代码
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·java笔试题
·Modem 常用AT指令集
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

Windows环境下的麦克风录音系统(4)

作者: 来源:网络文章 时间:2005-12-13 17:18:57

Windows环境下的麦克风录音系统(4)(1)

Windows环境下的麦克风录音系统

5.Waveform AudioXML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     Waveform Audio APIsMicrosoft提供给广大Win32程序员用来给自己的应用程序添加声音支持的一套强大的API,它提供的功能如下:

        1.打开/关闭/查询声音设备;

        2.播放波形文件;

        3.设置播放速度;

        4.播放进度控制;

        5.录音;

        6.得到当前的播放位置;

        7.调节音量.

 

下面简单介绍一下这套API提供的主要函数:

  • 打开录音设备函数

            MMRESULT waveInOpen(

            LPHWAVEIN phwi,                 // 输入设备句柄

            UINT uDeviceID,                   // 输入设备ID

            LPWAVEFORMATEX pwfx,       // 录音格式指针

            DWord dwCallback,              // 处理MM_WIM_***消息的回调函数或窗 

                                                       // 口句柄,线程ID

            DWORD dwCallbackInstance, 

            DWORD fdwOpen                  //处理消息方式的符号位

          );

 

  • 为录音设备准备缓存函数

              MMRESULT waveInPrepareHeader(  HWAVEIN hwi, 

                                                                  LPWAVEHDR pwh,

                                                                  UINT bwh ); 

 

  • 给输入设备增加一个缓存

              MMRESULT waveInAddBuffer(  HWAVEIN hwi,

                                                           LPWAVEHDR pwh,

                                                           UINT cbwh ); 

 

  • 开始录音

              MMRESULT waveInStart(  HWAVEIN hwi  ); 

 

  • 清除缓存

              MMRESULT waveInUnprepareHeader( HWAVEIN hwi,

                                                                     LPWAVEHDR pwh,

                                                                     UINT cbwh); 

 

  • 停止录音

              MMRESULT waveInReset( HWAVEIN hwi ); 

 

  • 关闭录音设备

              MMRESULT waveInClose( HWAVEIN hwi ); 

 

  • Wave_audio数据格式

              typedef strUCt {

                   WORD  wFormatTag; // 数据格式,一般为WAVE_FORMAT_PCM

                                                   // 脉冲编码

                   WORD  nChannels;     // 声道

                   DWORD nSamplesPerSec;   // 采样频率

                   DWORD nAvgBytesPerSec;  // 每秒数据量

                   WORD  nBlockAlign;

                   WORD  wBitsPerSample;     // 样本大小

                   WORD  cbSize;

            } WAVEFORMATEX; 

  • waveform-audio 缓存格式

             typedef struct {

                   LPSTR  lpData;                    // 内存指针

                   DWORD  dwBufferLength;    // 长度

                   DWORD  dwBytesRecorded; // 已录音的字节长度

                   DWORD  dwUser;

                   DWORD  dwFlags;

                   DWORD  dwLoops;              // 循环次数

                   struct wavehdr_tag * lpNext;

                   DWORD  reserved;

             } WAVEHDR; 

 

  • 相关消息

             MM_WIM_OPEN:打开设备时消息,在此期间我们可以进行一些初始化工作

             MM_WIM_DATA:当缓存已满或者停止录音时的消息,处理这个消息可以对

                                     缓存进行重新分配,实现不限长度录音

             MM_WIM_CLOSE:关闭录音设备时的消息。

 

 

5. Multimedia File I/O

       Multimedia File I/O APIsMicrosoft提供的另外一套强大的针对媒体文件I/OAPI,我们知道许多像MediaPlay,RealOne这样的多媒体程序对媒体文件的读写性能要求很高,它们几乎要求实时的将磁盘上的媒体文件以流的形式读入,但是对于一般的文件I/O形式如图1:

ASPectratio="t" v:ext="edit">CSDN_Dev_Image_2004-3-31514310.jpg">

                        7

 

    1.文件从磁盘上被读入操作系统File I/Obuffer;

    2.然后拷贝到应用程序自己的buffer;

    3.应用程序这时候才能读取文件内容.

       上述的过程对于多媒体应用程序来说是低效的而且浪费宝贵的内存资源,如果文件和大的话势必还要采取分段读取等机制,Multimedia File I/O采取了一种直接存取机制(如图2),使得应用程序可以直接读取操作系统的File I/O buffer,大大提高了效率.后面我们会利用此套API实现录音文件的存储.

 

                         图2

               

共2页 9 7 [1] [28 :>

Windows环境下的麦克风录音系统(4) 相关文章:
Windows环境下的麦克风录音系统(4) 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com