zoukankan      html  css  js  c++  java
  • 波形捕捉:(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

  • 相关阅读:
    字符串替换
    字符串查找
    字符串比较
    字节与字符串相互转换
    1365. How Many Numbers Are Smaller Than the Current Number
    1486. XOR Operation in an Array
    1431. Kids With the Greatest Number of Candies
    1470. Shuffle the Array
    1480. Running Sum of 1d Array
    【STM32H7教程】第56章 STM32H7的DMA2D应用之刷色块,位图和Alpha混合
  • 原文地址:https://www.cnblogs.com/stg609/p/1314500.html
Copyright © 2011-2022 走看看