使用 monotouch 播放 mp3

Posted

技术标签:

【中文标题】使用 monotouch 播放 mp3【英文标题】:play mp3 with monotouch 【发布时间】:2011-10-12 20:13:21 【问题描述】:

我正在使用 monotouch 构建一个应用程序。基本上我需要在应用程序加载后立即播放 mp3。 在 main.cs 上,我在推送主控制器之前添加了这个 sn-p:

AVAudioPlayer player = new AVAudioPlayer();
NSUrl mediaFile = NSUrl.FromFilename("Content/Audio/music1.mp3");

player = AVAudioPlayer.FromUrl(mediaFile);
player.Delegate = new PlayerDelegate();

if(player.PrepareToPlay())
  player.Play();

但是当我启动应用程序时,我可以听到大约半秒钟的声音,然后什么也听不见。 这段代码是正确的还是有什么问题?

谢谢

【问题讨论】:

【参考方案1】:

如果没有更多上下文(例如更多代码),很难提供答案 :-)

我怀疑你的AVAudioPlayer,如果用作局部变量,当方法(是FinishedLaunching?)返回时,垃圾收集器(GC)可能会收集它。

如果是这种情况,那么提升您的本地 player 变量到一个字段中将确保对 AVAudioPlayer 实例的引用保持不变,并且应该允许它在不被中断(或崩溃)的情况下播放)。

如果我错了,请编辑您的问题并为我们提供更多背景信息,我们应该能够为您提供进一步的帮助。

【讨论】:

我只是调用了一个函数来从 public override bool FinishedLaunching (UIApplication app, NSDictionary options) PlayAudio();并且 PlayAudio 函数包含我的问题的代码 抱歉,状态不清楚?它有效吗(我假设是这样,因为您接受了答案)?要记住的重要一点是 player 继续工作/播放 after FinishedLaunching 返回,因此该对象的实例仍然需要 alive (而不是收集)。 是的,我将变量提升到一个字段中并且它起作用了。我认为问题与 GC 的操作有关。非常感谢 poupou【参考方案2】:

尝试注册 AVAudioPlayerDelegate 并在 audioPlayerEndInterruption 方法中重新开始音乐备份。

【讨论】:

嗨拉方索,感谢您的回复。我试过这样的东西:AVAudioPlayer player = new AVAudioPlayer();NSUrl mediaFile = NSUrl.FromFilename("Content/Audio/music1.mp3");player = AVAudioPlayer.FromUrl(mediaFile);player.Delegate = new AVAudioPlayerDelegate();player.EndInterruption += delegate(object sender, EventArgs e) `player.Play();`;if(player.PrepareToPlay())`player.Play();`最坏的。应用程序在开始播放时崩溃 我对MonoTouch不太熟悉,但是我知道在Objective-C中开发的时候,Xcode在项目中添加资源时会默默地做很多事情。确保没有可能的文件格式错误(尝试 .wav),或从主包加载文件。一个例子在这里:[链接]techotopia.com/index.php/…【参考方案3】:

现在真的很容易:

            //enable audio
            Audiosession.Initialize();

            //load the sound
            sound = SystemSound.FromFile("Sounds/rev.wav");
            sound.PlaySystemSound();

【讨论】:

以上是关于使用 monotouch 播放 mp3的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MonoTouch 在 iPhone 上播放视频?

Monotouch:使用 iPhone 模拟器播放背景音频

Monotouch:尝试从使用 AVAudioPlayer 动态生成的文件中播放音频

MonoTouch:播放声音

如何在应用程序运行时使用 MonoTouch 播放背景音乐

Monotouch 声音无法正常播放