AVfoundation AudioPlayer 不工作

Posted

技术标签:

【中文标题】AVfoundation AudioPlayer 不工作【英文标题】:AVfoundation AudioPlayer not working 【发布时间】:2013-05-05 18:22:15 【问题描述】:

我正在尝试使用 AVFoundation 框架在按钮单击时播放声音。以前,我使用音频工具箱,但是当我使用音频播放器时,什么都没有。奇怪的是,当我在手机上测试它并按下按钮时,音量控制不是正常的铃声音量控制。这表明它应该正在播放,但我在手机或模拟器上听不到任何声音。我使用了不同的文件,创建了新项目更改了代码,没有任何帮助。

这是.h中的代码:

@interface MainViewController : UIViewController <AVAudioPlayerDelegate>

- (IBAction)test;

这是.m中的代码:

- (IBAction)test 
NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"];
AVAudioPlayer* theAudio = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];

【问题讨论】:

你检查过theAudio是否为nil吗? @sergio 我该怎么做? 你已经声明你将实现AVAudioPlayerDelegate 你真的这样做了吗?这里没有代码。但是,我同意以前的 cmets。 path 最有可能是 nil 并且 [theAudio play] 是空操作。 @Marko 好的,谢谢!我需要在哪里输入什么代码?抱歉,我还不是最擅长的。 @rblue36: 在初始化 theAudio 之后放一个 NSlog(@"theAudio address: %x", (long)theAudio);... 【参考方案1】:

你能在播放声音之前这样做吗?我认为你可能有错误的类别:

AudiosessionInitialize (NULL,NULL,NULL,NULL);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,sizeof (sessionCategory),&sessionCategory); 
AudioSessionSetActive(true);

【讨论】:

这个? - (IBAction)test AudioSessionInitialize (NULL,NULL,NULL,NULL); UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory),&sessionCategory); AudioSessionSetActive(true); NSString path = [[NSBundle mainBundle] pathForResource:@"hagay" ofType:@"mp3"]; AVAudioPlayer theAudio = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; theAudio.delegate = self; [音频播放]; 虽然音频的重要用途肯定需要,但默认启用音频输出。

以上是关于AVfoundation AudioPlayer 不工作的主要内容,如果未能解决你的问题,请参考以下文章

扑。任务“:audioplayer:verifyReleaseResources”执行失败

AVPlayer/AudioPlayer:没有错误但没有声音

AudioPlayer

在颤动的根项目'audioplayer'中找不到任务'assembleAarRelease'

如何检查 Audioplayer 的播放时间增加 2 秒

javascript Alexa - 对AudioPlayer.PlaybackStarted的响应导致错误