Monotouch 声音无法正常播放
Posted
技术标签:
【中文标题】Monotouch 声音无法正常播放【英文标题】:Monotouch sound doesn't play properly 【发布时间】:2011-05-10 00:46:57 【问题描述】:我正在尝试在 monotouch 中播放声音文件,但它在一两秒后被切断。这是我用来播放声音的代码:
SoundFileName = filename;
var sound = SystemSound.FromFile(filename);
sound.PlaySystemSound();
这是我正在尝试播放的 MP3 文件。再一次,我听到了一小会儿,然后就被剪掉了。之后我添加了一个 thread.sleep() 行,然后它会一直播放。
但这并不理想,因为我正在播放的 mp3 文件的长度可能会有所不同。任何帮助将不胜感激。谢谢你。
【问题讨论】:
【参考方案1】:您需要在表单或类级别声明您的sound
对象。在您发布的示例中,sound
仅作用于函数,因此一旦方法结束,变量就会超出作用域并在声音播放完毕之前被释放。 Thread.sleep
有效,因为该调用会阻止该方法结束一段时间(从而防止 sound
超出范围)。
【讨论】:
非常感谢,陷入了 MT 激进的 GC :(【参考方案2】:您可能还想看看这个问题:Playing a sound with MonoTouch
我不认为 SystemSound 旨在与开放时长的 MP3 一起使用。
【讨论】:
ios 中的AVAudioPlayer
(我假设是 MonoTouch 包装的)与 .NET 中的 SoundPlayer
工作方式相同 - 它在开始播放之前预加载整个文件,这意味着它并不理想对于一首歌曲长度的 MP3。我不知道,也许 MonoTouch 通过包装不同的 iPhone API 来实现 SoundPlayer
(据我所知,至少有 3 个可供选择)?以上是关于Monotouch 声音无法正常播放的主要内容,如果未能解决你的问题,请参考以下文章