AVAudioPlayer无法初始化

时间:2017-09-11 11:44:21

标签: c# ios xamarin xamarin.ios avaudioplayer

在Xamarin.iOS应用程序AVAudioPlayer用于录制和播放一些音频文件。

用户非常快速地记录和保存一些音频文件,当他尝试播放其中一个时,它会在行中抛出System.Exception:

NSError error;
_player = new AVAudioPlayer(NSUrl.FromFilename(_audioPlaybackFilePath), "m4a", out error);
  

System.Exception:无法初始化该类型的实例   ' AVFoundation.AVAudioPlayer':原生   ' initWithContentsOfURL:fileTypeHint:错误:'方法返回零。它是   可以通过设置忽略这个条件   MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure为false。

存在给定路径中的文件。

  1. 可能出现问题的任何迹象?
  2. 有没有办法将MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure设置为false,因为它在Exception StackTrace中声明?

2 个答案:

答案 0 :(得分:0)

正如@SushilHangover指出的那样,使用AVAudioPlayer.FromData并向其提供如下流:

    theStream.Position = 0;
    AVAudioPlayer.FromData(NSData.FromStream(theStream));

并且,这非常重要,流始终定位为0。

答案 1 :(得分:0)

我们使用AVAudioPlayer的软件包Plugin.AudioRecorder遇到了此错误。我们可以通过将以下代码添加到FinishedLaunching中来解决该问题:

AudioPlayer.OnPrepareAudioSession = audioSession =>
{
    // maybe force audio to route to the speaker?
    var success = audioSession.OverrideOutputAudioPort (AVAudioSessionPortOverride.Speaker, out NSError error);
};