2015-10-15 9 views
5

Ich versuche Audio von einer URL in meiner App abzuspielen. Alles passiert wie erwartet in iOS 8 (Simulator und physische Geräte). Für iOS 9 funktioniert es im Simulator, aber auf dem Gerät wird das Audio einfach nicht abgespielt. Das Streaming erscheint, wenn ich auf Play klicke, zeigt der Fortschrittsbalken auch an, dass Audio geladen und abgespielt wird, aber der Sound kommt nicht. Dieses Problem tritt in iOS 9 physischen Gerät auf. Es funktioniert völlig einwandfrei mit iOS 8 physischen Gerät.AVPlayer spielt kein Audio - iOS 9, Ziel - C

Ich habe eine einfache Schaltfläche erstellt. Beim Klicken auf die Schaltfläche wird der AVPlayerViewController geladen und AVPlayer wird mit der angegebenen URL initialisiert. Der Code ist folgende:

#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

ist die URL nil in Ihre für segue vorbereiten? –

+0

Nein. Ich habe 'NSLog ("% @ ", (NSURL *) Absender)' und es gab die URL in meinem Protokoll. –

Antwort

24

verschiedene Versuch und Irrtum Taktik für über 5 Tage Nachdem ich, habe ich endlich herausgefunden, dass mein Problem mit dem Mute-Schalter des Telefons war. Wenn es stummgeschaltet ist, wird das Audio nicht abgespielt! Also, habe ich die folgende Zeile Code zu meiner Kategorie wie die Wiedergabe angeben und jetzt spielt es auch, wenn das Gerät eingeschaltet ist stumm

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

Thank you!

+1

Gespeichert mein Arsch. Danke –

+0

Dieser Code funktioniert auch für mich, danke, aber ich konnte nicht herausfinden, auf welchem ​​iPhone, über den Sie sprechen. Was ist stumm? –

+1

@ArpitBParekh Der Schalter, den ich erwähnt habe, befindet sich auf der linken Seite oberhalb der Lautstärkewippe. Wenn der Code funktioniert und dir geholfen hat, würde Upvote wirklich geschätzt werden :) –

1

Für alle mit dem gleichen Problem, hier ist die Swift-Lösung.

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

Und einige documentation