【问题标题】:Java: Any Simple Way to Play Audio Files on Mac?Java:在 Mac 上播放音频文件的任何简单方法?
【发布时间】:2012-04-16 02:13:14
【问题描述】:

所以我正在尝试制作一款游戏,其中包含在游戏过程中要播放的许多不同的音效。但是,大约一分钟左右后,应用程序不断崩溃,说:

Invalid memory access of location 0x54008 rip=0x11c7737fd

或者有时还有另一个与内存相关的错误。 在报告中,它说我的程序使用了太多内存,并且由于内存不足而崩溃。但是,它在 Windows 上运行得非常好,不仅在另一台计算机上,甚至在使用虚拟机的同一台计算机上(我正在使用 macbook 顺便说一句)。我已将 Java 更新到最新版本。有没有办法解决这个问题,或者至少有 另一种在 Mac (Lion) 上也可以正常工作的方法?我使用以下链接中的代码在我的程序中播放音频文件:

http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml

提前致谢。

【问题讨论】:

  • 这是从 Java 获取的奇怪错误消息。你在呼唤一些原生界面吗?
  • @aroth 不,我没有做任何特别的事情,我所做的只是包含并使用该类文件来播放音频文件: new AePlayWave("Effect.wav").start( );
  • @MДΓΓБДLL 是的,正如我在帖子中提到的,我已将 Java 更新到最新版本。除非有另一个不是通过软件更新分发的更新。
  • 哎呀,对不起,我错过了。跟我一起回角落……
  • @MДΓΓБДLL 没关系。还有其他建议吗?

标签: java memory audio osx-lion


【解决方案1】:

您可以使用从Applet.newAudioClip() 返回的java.applet.AudioClip 吗?

AudioClip 接口是用于播放声音剪辑的简单抽象。可以同时播放多个 AudioClip 项目,并将生成的声音混合在一起以产生合成。

(您不制作 Java Applet 没关系 - 您仍然可以使用这些类...)

AudioClip clip = Applet.newAudioClip(resource);
clip.play();

(我在 Snow Leopard 上使用过这个没有任何问题。)

【讨论】:

  • 嗯..我从来没有真正尝试过这个。我一定会尽快尝试的。谢谢。我尝试后会更新。 (另外,您是否也将您的 java 更新到了最新版本?)
  • @Dennis:是的,我有最新的 Java(在 SL 上,但不是 Lion)。
  • 天哪。这行得通!我现在只测试过一次,但是我玩了很长时间,然后它产生了任何错误并且没有崩溃。尽管它看起来像是为小程序设计的,但效果很好。一个问题是,如果剪辑(音频)很长,则音频会被剪辑。我相信这就是 SourceDataLine 或其他用途的原因。由于这个游戏的所有音效都很短,这并不重要,但我有一个超过一分钟的剪辑(用于背景音乐),它在停止播放后重复播放(带有计时器) .
  • 所以背景音乐平均在十多秒内被剪辑。我能做些什么来防止这种情况发生?
  • @Dennis:对不起,我从来没有这么长的(波形)剪辑。顺便说一句,AudioClip 将播放 MIDI 文件(这是我用于音乐的文件)。
猜你喜欢
  • 2017-08-14
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多