Delphi 10 Seattle中录制音频


本文整理自网络,侵删。

 
了解如何使用Delphi 10 Seattle录制音频。
FMX.Media.TAudioCaptureDevice
FMX.Media.TAudioCaptureDevice进行录制使用类进行。

使用TCaptureDeviceManager类的DefaultAudioCaptureDevice方法获得TAudioCaptureDevice对象。

FMicrophone := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
使用StartCapture方法开始录制。

FMicrophone.StartCapture;
使用StopCapture方法停止记录。

FMicrophone.StopCapture;
您可以使用State属性确定是否正在进行录制。


创建一个示例应用程序来录制音频。

将三个TMemo,MediaPlayer和TButton组件放在窗体上。

表格1

添加一个私有变量。

private
  { private  }
  FMicrophone: TAudioCaptureDevice;
创建一个方法来获取音频文件的文件名。

private
  { private  }
  function GetAudioFileName: string;

uses System.IOUtils;

function TForm1.GetAudioFileName: string;
const
{$IF DEFINED(ANDROID) OR DEFINED(IOS)}
  AUDIO_FILENAME = 'temp.caf';
{$ELSE}
  AUDIO_FILENAME = 'temp.wav';
{$ENDIF}
begin
  Result := TPath.Combine(TPath.GetDocumentsPath, AUDIO_FILENAME);
end;
在窗体的OnCreate事件中创建一个TAudioCaptureDevice对象。

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMicrophone := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
  if not Assigned(FMicrophone) then
  begin
    Memo1.Lines.Add('无法使用语音捕获设备。');
    Exit;
  end;
  FMicrophone.FileName := GetAudioFileName;
end;
按下录音按钮开始录音。

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  if Assigned(FMicrophone) then
  begin
    FMicrophone.StartCapture;
    Memo1.Lines.Add('开始录音了。');
  end;
end;
按停止按钮停止录制。

procedure TForm1.ButtonStopClick(Sender: TObject);
begin
  if (Assigned(FMicrophone)) and
    (FMicrophone.State = TCaptureDeviceState.Capturing) then
  begin
    FMicrophone.StopCapture;
    Memo1.Lines.Add('录音结束。');
  end;
end;
按播放按钮播放记录的文件。

procedure TForm1.ButtonPlayClick(Sender: TObject);
begin
  if TFile.Exists(GetAudioFileName) then
  begin
    MediaPlayer1.FileName := GetAudioFileName;
    MediaPlayer1.Play;
    Memo1.Lines.Add('开始播放。');
  end;
end;
要在Android上运行,您需要添加权限。
在项目选项中选择“使用权限”,然后选中“录制音频”。




安卓苹果手机测试通过

相关阅读 >>

Delphi-edit中只能输入数字且只能输入一个小数点

Delphi获取系统字体列表

Delphi做繁体简体转换

Delphi 使用firedac的tfdscript组件执行文件中描述的sql语句

Delphi tms web core 复制内容到剪切板

Delphi获取注册表run下所有值

Delphi 实现php的urlencode编码效果

如何让dbgrid显示序号?

Delphi access 数据库压缩

Delphi 以低用户权限启动一个进程.比如vista或者win7中的ie

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...