2015-10-15 21 views
5

Sto provando a riprodurre l'audio da un URL nella mia app. Tutto accade come previsto in iOS 8 (simulatore e dispositivi fisici). Per iOS 9, funziona in simulatore ma su dispositivo, l'audio semplicemente non suona. Lo streaming appare, se clicco su play, la barra di avanzamento mostra anche che l'audio viene caricato e riprodotto ma il suono non arriva. Questo problema si verifica nel dispositivo fisico iOS 9. Funziona perfettamente con il dispositivo fisico iOS 8.AVPlayer non riproduce audio - iOS 9, Obiettivo - C

Ho creato un semplice pulsante. Facendo clic sul pulsante, AVPlayerViewController viene caricato e AVPlayer viene inizializzato con l'URL specificato. Il codice è il seguente:

#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 
+0

è il nullo URL nel preparare la segue? –

+0

No. Ho fatto 'NSLog ("% @ ", (NSURL *) mittente)' e ha fornito l'URL nel mio log. –

risposta

24

Dopo aver fatto varie tattiche tentativi ed errori per più di 5 giorni, ho finalmente capito che il mio problema era con l'interruttore mute del telefono. Quando è disattivato, l'audio non funziona! Così, ho aggiunto la seguente riga di codice per specificare mia categoria, come la riproduzione e ora gioca anche quando il mio interruttore dispositivo è acceso muto

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

Grazie!

+1

Salvato il mio culo. Grazie –

+0

Questo codice funziona anche per me, grazie, ma non ho potuto scoprire in iPhone di quale interruttore stai parlando. che è muto? –

+1

@ArpitBParekh L'interruttore che ho citato si trova sul pannello laterale sinistro in alto sopra il pulsante del bilanciere del volume. Se il codice funzionasse e ti avesse aiutato, sarebbe stato molto apprezzato anche l'upvote :) –

1

Per chiunque abbia lo stesso problema, ecco la soluzione Swift.

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

E alcuni documentation

Problemi correlati