簡體   English   中英

在Delphi XE2的Mac上有沒有WAV聲音播放?

[英]Is there any WAV sound playback on Mac from Delphi XE2?

是否有關於如何在Mac上使用Delphi XE2 FireMonkey構建的應用程序播放WAV文件的教程或示例?

我問,因為這段代碼不起作用:

var
  //fWaves head and data is initialized and plays properly on Win through OpenAL
  fWaves: array of record 
    Head: TWAVHeaderEx;
    Data: array of byte;
  end;
  D: NSData;
  N: NSSound;
begin
  D := TNSData.Wrap(TNSData.Create.initWithBytes(@fWaves[0].Head, SizeOf(fWaves[0].Head) + fWaves[0].Head.DataSize));
  ShowMessage(IntToStr(D.length)); //--Length is correct
  N := TNSSound.Wrap(TNSSound.Create.initWithData(D));
  ShowMessage(FloatToStr(N.Duration)); //--Displays 0
  if N.play then
    ShowMessage('Yes')
  else
    ShowMessage('No'); //--Always returns NO
end;

我正在從內存加載WAV文件頭和數據,它可以與OpenAL一起使用。 所以問題出在我的NSSound用法中。 有誰能在Mac上提供Delphi XE2聲音播放的一些工作示例?

Freepascal / Lazarus有一個名為“macosall.pas”的單元,它是os-x C ++頭文件到pascal的翻譯,允許你調用本機的os-x函數。

遺憾的是,這個單元不是delphi的一部分,但是通過打開單元,你可以將函數聲明復制到delphi,它應該可以工作。

我希望你能在quicktime API中找到你需要的東西,它是蘋果機器上媒體的中心樞紐。 另請查看Apple開發人員並查看文檔。

不妨將其作為答案發布,以防萬一:

試過,嘗試過initFromFile(path_to_aiff) ..沒有任何幫助。 所以我終於切換到了OpenAL。

也許在未來Embarcadero修復了訪問NSSound的特定方式,但是現在OpenAL效果最好。 此外,OpenAL是跨平台的,這意味着我可以在Win和Mac上使用相同的聲音代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM