【问题标题】:Playing Sound On Button (AV Audio Player) returning nil string parameter在按钮上播放声音(AV 音频播放器)返回零字符串参数
【发布时间】:2014-04-24 19:37:43
【问题描述】:

我正在尝试在按下按钮时播放声音。以前,我使用 Audiotoolbox,它适用于相同的文件类型。但是,我需要更改为使用 AvAudioPlayer,因为它不使用铃声音量。

所以上周我了解了使用音频播放器在点击时播放声音。我让它使用 exact 相同的代码在我的 over 应用程序上工作。但是,尽管尝试了无数次,但这个应用程序无法与 AVFoundation/AudioPlayer 一起使用。我尝试添加新文件、新按钮、更改文件扩展名。文件名在资源文件夹中。我没有把名字拼错了。

确切的问题是它在尝试查找我的文件时返回一个 nil 字符串参数:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'* -[NSURL initFileURLWithPath:]: 零字符串参数'

我几乎看过所有关于此的论坛帖子,但没有一个对我有帮助。我只能认为我的项目中存在潜在问题,可能是资源文件夹而不是实际的 AVAudioPlayer 代码,因为事实上我有这个确切的代码在另一个项目上工作相同。任何帮助都将不胜感激,因为我很难过。

这里是重要的代码:

这是在我的 .h 中

@interface MainViewController : UIViewController

@property (strong, nonatomic) AVAudioPlayer *theAudio;
- (IBAction)test:(id)sender;

这是在我的 .m 中

@synthesize theAudio;

- (IBAction)test:(id)sender {
NSString *path = [[NSBundle mainBundle] pathForResource:@"beast" ofType:@"wav" ];
self.theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]      error:nil];
[self.theAudio play];
}

请帮忙

【问题讨论】:

    标签: ios audio avfoundation avaudioplayer nsurl


    【解决方案1】:

    我有同样的问题。使用 AVPlayer 而不是 AVAudioPlayer 节省我的时间。

    【讨论】:

      【解决方案2】:

      [NSBundle pathForResource:ofType:]返回的nil路径表示wav文件还没有复制到你的应用包中。

      您是否已将文件添加到您的项目中?如果是这样,这些文件是否包含在您的目标中? 签入 Target > Build Phases > Copy Bundle Resources 或在项目导航器中选择它们 (⌘1) 并选中 File Inspector (⌘⌥1) 中的框。

      【讨论】:

      • 重新添加了很多次,但没有任何变化。此外,它们在目标中。 i.gyazo.com/ff8ffbe9d7b6d443e82e2d218ddf20c7.png 我很困惑,不知道怎么了。在这个应用程序中一遍又一遍地尝试相同的代码,但它不起作用。
      • 干净的构建?删除设备上的应用?重建并运行?它在模拟器中工作吗? ls -l AppOnSimulator.app 看看有没有beast.wav?
      • 我正在使用模拟器,因为我的配置文件由于某种原因无法正常工作,并且在那里无法正常工作。尝试清洁和重建。 “ls -l AppOnSimulator.app 看看是否有 beast.wav”是什么意思? ?
      • 我将文件添加到 Copy Bundle Resources 文件夹,效果很好。我的问题是什么使声音文件或图像被添加到此文件夹中?
      猜你喜欢
      • 2022-10-31
      • 2016-05-29
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多