如何在 Delphi 中使用 TMediaPlayer 从麦克风输入中录制音频?

Posted

技术标签:

【中文标题】如何在 Delphi 中使用 TMediaPlayer 从麦克风输入中录制音频?【英文标题】:How to record audio from microphone input using TMediaPlayer in Delphi? 【发布时间】:2016-03-30 00:17:20 【问题描述】:

您好,我是 Delphi 的新手,但以前编程过。

我想从笔记本电脑的麦克风输入中录制音频。 Tmediaplayer 有一个录制按钮,但我不太明白来自的文档 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/MPlayer_TMediaPlayer_StartRecording.html如何使用它。

有人可以列出一些有关如何使用它的步骤或链接任何使用 Tmediaplayer 进行录制的示例代码吗?

另外录制的文件是用什么格式保存的?它可以是一个包含数据的数组还是一个 .WAV 文件?

任何帮助表示赞赏和感谢。

【问题讨论】:

【参考方案1】:

使用非常简单,使用TMediaPlayer.OnClick 事件。此答案基于 VCL.TMediaPlayer,因为您尚未指定您使用的 UI 库。

procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean);
begin
  case Button of
    btStop:
      begin
        MediaPlayer1.Stop;
        MediaPlayer1.FileName := 'WhateverYouWant.wav';
        MediaPlayer1.Save;
      end;
    btRecord: MediaPlayer1.StartRecording;
  end;

为简洁起见,我省略了其他按钮。

文件类型由TMediaPlayer.DeviceType 属性决定,必须在开始录制之前设置。我可以在列表中看到的唯一录音类型是 WAV 格式。

【讨论】:

哦,对了,非常感谢@Ken White!我有用于 Win32 的 Delphi® 2007,它使用与上述相同的库吗?但是,表单上的按钮被禁用。因此,case 语句的值会发生什么变化?我是否必须创建单独的按钮,然后在事件处理程序中添加此代码? 是的,它是同一个组件。我无法告诉您为什么表单上的按钮被禁用;我没有那个问题。您的系统上是否配置了声卡(用于播放)和麦克风(用于录音)? 在“对象检查器”中,我将“自动打开”选项设为真。这启用了一些按钮,例如播放、录制、倒带和快进。但是停止按钮被禁用。是的,它在我的笔记本电脑上,声卡在其中工作,我已插入麦克风进行录音。我已经将 tmediaplayer 添加到我的表单中,然后使用上面的代码(一旦我为它创建了一个点击事件)。我不确定为什么停止按钮不起作用。 @KenWhite 停止按钮被禁用,因为您在开始之前无法停止(这对您来说应该很有意义),就像您在播放或录制时无法开始一样。 哦,好的,谢谢。是的,当我按下记录时,它仍然没有出现,所以没有办法停止记录。我想我会试着弄清楚。感谢你目前的帮助。 @KenWhite

以上是关于如何在 Delphi 中使用 TMediaPlayer 从麦克风输入中录制音频?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Delphi中使用用C#创建的DLL

如何在不同步的情况下使用 Delphi (Pre Delphi 2010) 版本更新 GUI 控件

Delphi:如何在公共函数中使用 ComponentCount?

如何停止在 Delphi 中使用 IVBSAXXMLReader 解析 XML 文档?

如何停止在 Delphi 中使用 IVBSAXXMLReader 解析 XML 文档?

如何在 Delphi 2010 中使用 WS-* 标准