在delphi中读取和播放Wav文件

时间:2014-11-09 20:49:53

标签: delphi audio

如何在delphi中播放未压缩的wav文件? 我的意思是逐字节读取wav文件并将数据直接发送到扬声器。 我搜索了互联网,发现了一些在指定时间内播放声音的功能。例如:myplaysoundfunc(1200, 100)。这将播放1200Hz的声音100毫秒。 但播放wav文件更复杂。我对Samples per secondbits per samples有疑问。

1 个答案:

答案 0 :(得分:1)

您不需要任何组件或外部库。

完整的应用程序源代码,取自http://rosettacode.org/wiki/Play_recorded_sounds#Delphi

{$APPTYPE CONSOLE}
program PlayRecordedSounds;
uses MMSystem;
begin
  sndPlaySound('SoundFile.wav', SND_NODEFAULT OR SND_ASYNC);
end.

使用这些参数,当您的应用程序继续运行时,声音会在后台播放。 如果您使用SND_SYNC而不是SND_ASYNC,则应用程序会在继续之前等待声音完成。

如果添加SND_LOOP,也可以让声音循环播放。 除非您添加SND_NOSTOP,否则此过程会停止您之前播放的声音。这样,旧的声音就会继续播放。

注意:

  • 这只适用于Windows。对于FireMonkey,还有其他选择。
  • 如果你真的想逐个采样,事情变得更加复杂。在这种情况下,我建议使用一个库来帮助你解决这个问题,比如Delphi ASIO/VST library