• 波形捕捉:(9)写入到WAV文件


    写入到WAV文件

          WAV文件为资源交换文件格式(RIFF),包括若干数量的命名块,其中包含头信息(如声音采样格式)或数据(如样本本身)。Win 32 API提供了打开关闭FIFF文件、查找块等函数。这些函数的名字都以“mmio”开头。

          DirectSound API 不包括写入WAV文件的方法。但是 DXUTsound.cpp 文件实现了一个 CWaveFile 类,这个类具有以下管理捕捉文件的方法:
          ·Open 方法。打开一个文件并且写入头部块。
          ·Write 方法。将数据从缓冲区写入到数据块中并且提高写指针。
          ·Close 方法。将数据块的大小写入到头部并且关闭文件。

          写入到一个WAV文件的第一步是调用 CWaveFile::Open 方法。这样会创建一个文件并且写WAV格式块。参数为文件名,一个指向初始化后的WAVEFORMATEX 结构体的指针和 WAVEFILE_WRITE 标志。这个方法返回一个 HRESULT。

    下面的代码为写入打开了一个WAV文件:

    Code


          应用程序现在可以开始从捕捉缓冲区复制数据到这个文件了。

          下面的示例函数将在每次读指针到达通知位置时被调用。在这个函数内,将使用如下全局变量:
          ·g_pDSBCapture 是一个指向缓冲区中的 IDirectSoundCaptureBuffer8 接口的指针。
          ·g_dwNextCaptureOffset 跟踪缓冲区中下一个将要被复制到文件的数据块的偏移量。
          ·g_dwCaptureBufferSize 表示缓冲区大小,被用在计算"环绕"。

    Code


    查看其它:
          导 言
          1.枚举“捕捉设备”
          2.创建“捕捉设备对象”
          3.“捕捉设备”性能
          4.创建一个“捕捉缓冲区”
          5.“捕捉缓冲区”信息
          6.“捕捉缓冲区”通知
          7. “捕捉缓冲区”特效
          8.使用“捕捉缓冲区”
          9.写入到WAV文件 

    作者:stg609

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    本人博客已经转移到Charley Blog

  • 相关阅读:
    Firefly是什么?有什么特点?
    windows7下启动mysql服务出现服务名无效
    win7系统64位eclipse环境超详细暗黑1.4服务器搭建
    Python安装模块出错(ImportError: No module named setuptools)解决方法
    Error format not a string literal and no format arguments解决方案
    DropFileName = "svchost.exe" 问题解决方案
    javascript
    Javascript
    PHP 命名空间namespace 和 use
    css
  • 原文地址:https://www.cnblogs.com/stg609/p/1314500.html
Copyright © 2020-2023  润新知