zoukankan      html  css  js  c++  java
  • Delphi多媒体设计之TMediaPlayer组件(四)

    录制波形音频(Recording Wave Audio)

    录制波形音频不是像大家想象的直接,也许大家以为所要做的就是调用StartRecording方法。然而,因为TMediaPlayer的问题,它不是那么简单的。

    要录制波形文件,首先必须打开一个存在的波形文件,这个波形文件和所想要的新文件有相同的录制参数,然后开始录制新的波形文件,改变FileName属性为新文件名,然后保存文件,这有点笨拙,但其作用。

    例如,假设有一个叫做Test.wav文件,这个文件以8000Hz,采样率16位且为单声道的波形格式录制,这时可以像下面代码那样在按钮上点击录制波形音频:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.btn6Click(Sender: TObject);
    begin
      with mpPlayer do
      begin
        { 设置FileName属性为 test.wav 文件,并从中获取录制参数信息}
        FileName := 'test.wav';
        { 打开设备}
        Open;
        { 开始录制}
        Wait := False;
        StartRecording;
      end;
    end;

    此时录制已经开始,并且控制已返回应用程序。现在需要停止录制,这可以通过第二个停止按钮来完成,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.btn7Click(Sender: TObject);
    begin
      with mpPlayer do
      begin
        { 停止录音}
        Stop;
        { 改变FileName属性为新的文件名用来保存到硬盘}
        FileName := 'new.wav';
        { 保存并关闭文件}
        Save;
        Close;
      end;
    end;

    示例程序界面如下:

    image

    Note

    在上面的编写过程中,因为TMediaPlayer中的故障,这些步骤对于波形音频的录制是很必要的。TMediaPlayer 录音是基于一个已存在的 wav 文件,TMediaPlayer 的功能是基于 MCI 的, 都是该淘汰的东西了, 但是我们还是要进行了解。

    控制波形音频录制的因素包括采样位数(通常为8或16)、采样频率和声道数,通常采样频率为8000kHz、11025kHz、22050kHz以及44100kHz,采样频率越高,录制质量越好。大部分情况下,用户可能不使用立体声,除非做游戏程序设计。即使做游戏程序设计,也应根据需要使用立体声。采样位数也影像录音质量。

    Note

    声音质量越好,录制波形音频文件占用的磁盘空间越多。立体声录音的文件大小是单声道录音文件的两倍。同样地,使用采样位数16位的文件大小会使采样位数8位的两倍。以22050kHz、单声道采样位数8位录制的文件可能是200K,而同样的文件以22050kHz、立体声且采样16位进行录制录制的文件大小将会是800K。大部分情况下,立体声和16位采样相对于它所需要的额外磁盘空间开销是不一定合算的。权衡声音质量和文件大小,22050kHz、单声道、8位采样的波形文件是一个很好的选择。


    以上代码均在Delphi 7下测试通过,示例代码下载:TMediaPlayer.rar

    转:http://www.cnblogs.com/pchmonster/archive/2012/07/17/2595084.html

  • 相关阅读:
    批处理+7zip解压用纯数字加密的压缩包zip
    golang 读取 chrome保存的网站账号信息
    c++实现"扫描检测硬件改动"
    c++获取磁盘句柄
    golang设置title并获取窗口句柄
    golang获取文件的md5
    golang获取u盘序列号(通过读取注册表实现)
    golang从文件按行读取并输出
    golang cgo注意事项
    python调用远程chromedriver.exe、selenium抓包方法
  • 原文地址:https://www.cnblogs.com/shuaixf/p/2821617.html
Copyright © 2011-2022 走看看