如果它尝试播放 mp3 文件,我的代码会崩溃,适用于 wav 文件
Posted
技术标签:
【中文标题】如果它尝试播放 mp3 文件,我的代码会崩溃,适用于 wav 文件【英文标题】:My code crashes if it tries to play a mp3 file, works fine for wav files 【发布时间】:2013-03-18 21:36:52 【问题描述】:我所有的声音片段都是 mp3,所以我真的不想翻译它们 tp wav。 如果我尝试播放 mp3 文件,则会出现异常,但该代码适用于 .wav 文件。 我认为必须有一种播放 mp3 文件的方法。
Stream s = TitleContainer.OpenStream("sounds/bag.mp3");
// throws a exceptio if its a mp3 file
SoundEffect effect = SoundEffect.FromStream(s);
FrameworkDispatcher.Update();
effect.Play();
【问题讨论】:
【参考方案1】:这是设计使然 - SoundEffect.FromStream
仅适用于波形文件。作为per MSDN:
Stream 对象必须指向有效 PCM 波形文件的头部。 此外,此波形文件必须为 RIFF 比特流格式。
音频格式有以下限制:
必须是 PCM 波形文件 只能是单声道或立体声 必须是 8 位或 16 位 采样率必须介于 8,000 赫兹和 48,000 赫兹之间
【讨论】:
你可以。例如,如果您使用 Silverlight+XNA,您可以使用MediaElement
。或者,如果您从事 Windows Phone 8 项目,您可以使用本机代码通过 XAudio2 来完成。【参考方案2】:
尝试使用媒体元素..
MediaElement MyMedia = new MediaElement();
MyMedia.Source = new Uri("sounds/bag.mp3", UriKind.RelativeOrAbsolute);
MyMedia.Play();
【讨论】:
MediaElement 非常有问题,不适合这种用途。声音应采用受支持的格式,并应通过 XNA 库播放以上是关于如果它尝试播放 mp3 文件,我的代码会崩溃,适用于 wav 文件的主要内容,如果未能解决你的问题,请参考以下文章
当 cordova-plugin-local-notification 尝试播放 mp3 文件时,Monaca Android 应用程序崩溃