AVPlayer не воспроизводит звук - iOS 9, цель - C

Я пытаюсь воспроизвести звук с URL-адреса в своем приложении. В iOS 8 все происходит так, как ожидалось (симулятор и физические устройства). Для iOS 9 он работает в симуляторе, но на устройстве звук просто не воспроизводится. Появляется потоковая передача, если я нажимаю на воспроизведение, индикатор выполнения также показывает, что звук загружается и воспроизводится, но звук не идет. Эта проблема возникает на физическом устройстве iOS 9. Он отлично работает с физическим устройством iOS 8.

Я создал простую кнопку. При нажатии на кнопку загружается AVPlayerViewController и инициализируется AVPlayer с заданным URL. Код следующий:

#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

person Rohan Sanap    schedule 15.10.2015    source источник
comment
в вашей подготовке к переходу URL-адрес равен нулю?   -  person Teja Nandamuri    schedule 15.10.2015
comment
Нет. Я сделал NSLog("%@", (NSURL *)sender), и он дал URL-адрес в моем журнале.   -  person Rohan Sanap    schedule 16.10.2015


Ответы (2)


После использования различных тактик проб и ошибок в течение более 5 дней я, наконец, понял, что моя проблема связана с выключателем звука на телефоне. Когда он выключен, звук не воспроизводится! Итак, я добавил следующую строку кода, чтобы указать мою категорию как воспроизведение, и теперь она воспроизводится, даже когда переключатель моего устройства отключен.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

Спасибо!

person Rohan Sanap    schedule 29.10.2015
comment
Спас мою задницу. Спасибо - person Sandeep Rana; 16.04.2017
comment
Этот код у меня тоже работает, спасибо, но я не смог узнать в iPhone, о каком переключателе вы говорите. который немой? - person Arpit B Parekh; 25.07.2017
comment
@ArpitBParekh Переключатель, о котором я упоминал, находится на левой боковой панели вверху над кнопкой регулировки громкости. Если бы код работал и помогал вам, мы будем благодарны за голос :) - person Rohan Sanap; 26.07.2017
comment
Ок, переключатель - это аппаратная кнопка айфона, вот и досталась. Спасибо. - person Arpit B Parekh; 26.07.2017
comment
Однако у меня не работает: (((В видеофайле есть звук, и проигрыватель не отключен. Громкость тоже максимальная. Я тоже добавил это, но все еще не работает - person Reza.Ab; 16.05.2018

Для тех, у кого такая же проблема, вот решение Swift.

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

И некоторая документация

person CharlieNorris    schedule 10.02.2018
comment
try! AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: []) для Swift 4.2 - person Adam Knights; 22.05.2019