AVPlayer无法播放音频- iOS 9,Objective-C。

9
我正在尝试在我的应用程序中从URL播放音频。在iOS 8(模拟器和实体设备)中,一切都按预期进行。对于iOS 9,在模拟器中可以正常工作,但在设备上,音频根本不会播放。如果我点击播放,进度条也显示音频正在加载和播放,但是声音没有出来。这个问题发生在iOS 9的实体设备上。它在iOS 8的实体设备上完全正常运行。
我创建了一个简单的按钮。点击按钮后,AVPlayerViewController被加载,并使用给定的URL初始化AVPlayer。代码如下:
#import "ViewController.h"
#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)playAudio:(id)sender {
    NSURL *url = [NSURL URLWithString:@"https://path/to/my.mp3"];
    [self performSegueWithIdentifier:@"playSegue" sender:url];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    AVPlayerViewController *viewController = (AVPlayerViewController *)segue.destinationViewController;
    viewController.player = [AVPlayer playerWithURL:(NSURL *)sender];
}

@end

你的 prepare for segue 中的 URL 是否为空? - Teja Nandamuri
没有。我执行了 NSLog("%@", (NSURL *)sender),并在我的日志中得到了该URL。 - Rohan Sanap
2个回答

32
经过尝试了五天的各种试错策略后,我终于发现我的问题是手机的静音开关。当它静音时,音频就不会播放!因此,我添加了以下代码行以指定我的类别为播放,并且现在即使我的设备开关处于静音状态也可以播放。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

谢谢!


1
救了我的命。谢谢。 - Sandeep Rana
这段代码对我也有效,谢谢。但是我在 iPhone 上找不到你所说的开关。哪个是静音? - Arpit B Parekh
1
@ArpitBParekh 我提到的开关位于左侧面板顶部,在音量控制按钮上方。如果这段代码对您有帮助,请不吝赐予点赞 :) - Rohan Sanap
好的,开关是 iPhone 的硬件按钮,我现在明白了。谢谢。 - Arpit B Parekh
虽然对我不起作用 :((( 视频文件有声音,播放器没有静音。 音量也已经最大了。 我也添加了这个,但仍然不起作用。 - Reza.Ab
新版本的Swift:audioSession.setCategory(AVAudioSession.Category.playback)。 - John

5

对于遇到相同问题的任何人,这里提供一个Swift解决方案。

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])

以下是一些技术文档相关内容:


1
尝试使用以下代码来设置音频会话类别:try! AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: []),适用于Swift 4.2。 - Adam Knights

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接