2015-07-03 10 views
14

Ich habe gerade eine Nachricht von crashlytics bekommen, dass meine App-Stabilität zur Hölle ging! im Grunde ist das der Absturz, der mit dem letzten Update in iOS (8.4) explodiert ist und in früheren Versionen nicht existierte.iOS 8.4 AVFoundation _attachToPlayer oder _attachToFigPlayer stürzt ab | Ein AVPlayerItem kann nicht mit mehr als einer Instanz von AVPlayer verknüpft werden.

Haben Sie eine Idee, was ist _attachToFigPlayer oder was kann passieren, dass dies verursacht? Es passiert in zwei Apps, einer in Obj-c und einer in Swift.

Danke euch allen!

Raw Absturz: (_attachToFigPlayer)

Thread : Fatal Exception: NSInvalidArgumentException 
0 CoreFoundation     0x22adafef __exceptionPreprocess 
1 libobjc.A.dylib    0x3141ec8b objc_exception_throw 
2 AVFoundation     0x21575b37 -[AVPlayerItem _attachToPlayer:] 
3 AVFoundation     0x2156a131 -[AVPlayer _attachItem:andPerformOperation:withObject:] 
4 AVFoundation     0x21569347 -[AVPlayer _insertItem:afterItem:] 
5 AVFoundation     0x2158744d -[AVQueuePlayer insertItem:afterItem:] 
6 MediaPlayer     0x24468c7f -[MPQueuePlayer insertItem:afterItem:] 
7 MediaPlayer     0x243e878b -[MPAVQueueCoordinator _syncPlayerItems] 
8 MediaPlayer     0x243e8297 -[MPAVQueueCoordinator _syncItems] 
9 MediaPlayer     0x243e97e5 __60-[MPAVQueueCoordinator _updateQueueDepthWithPausedDuration:]_block_invoke 
10 libdispatch.dylib    0x319af2e3 _dispatch_call_block_and_release 
11 libdispatch.dylib    0x319af2cf _dispatch_client_callout 
12 libdispatch.dylib    0x319b2d2f _dispatch_main_queue_callback_4CF 
13 CoreFoundation     0x22aa0609 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ 
14 CoreFoundation     0x22a9ed09 __CFRunLoopRun 
15 CoreFoundation     0x229eb201 CFRunLoopRunSpecific 
16 CoreFoundation     0x229eb013 CFRunLoopRunInMode 
17 GraphicsServices    0x2a4bc201 GSEventRunModal 
18 UIKit       0x261b7a09 UIApplicationMain 
19 MYAPP       0x000d98b3 main (main.m:32) 
20 libdyld.dylib     0x319d0aaf start 

Raw Absturz: (_attachToFigPlayer)

Thread : Fatal Exception: NSInvalidArgumentException 
    0 CoreFoundation     0x0000000182e602d8 __exceptionPreprocess 
    1 libobjc.A.dylib    0x0000000194ad40e4 objc_exception_throw 
    2 AVFoundation     0x0000000181634b50 -[AVPlayerItem _attachToFigPlayer] 
    3 AVFoundation     0x0000000181627770 -[AVPlayer _attachItem:andPerformOperation:withObject:] 
    4 AVFoundation     0x0000000181648f00 -[AVQueuePlayer insertItem:afterItem:] 
    5 MediaPlayer     0x0000000185251d30 -[MPQueuePlayer insertItem:afterItem:] 
    6 MediaPlayer     0x00000001851bde7c -[MPAVQueueCoordinator _syncPlayerItems] 
    7 MediaPlayer     0x00000001851bd8a4 -[MPAVQueueCoordinator _syncItems] 
    8 MediaPlayer     0x00000001851bf2fc __60-[MPAVQueueCoordinator _updateQueueDepthWithPausedDuration:]_block_invoke 
    9 libdispatch.dylib    0x0000000195151994 _dispatch_call_block_and_release 
    10 libdispatch.dylib    0x0000000195151954 _dispatch_client_callout 
    11 libdispatch.dylib    0x000000019515620c _dispatch_main_queue_callback_4CF 
    12 CoreFoundation     0x0000000182e177f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ 
    13 CoreFoundation     0x0000000182e158a0 __CFRunLoopRun 
    14 CoreFoundation     0x0000000182d412d4 CFRunLoopRunSpecific 
    15 GraphicsServices    0x000000018c79f6fc GSEventRunModal 
    16 UIKit       0x000000018793ef40 UIApplicationMain 
    17 MYAPP       0x00000001001c2e44 main (AppDelegate.swift:17) 
    18 libdyld.dylib     0x000000019517ea08 start 

Update:

Dies ist der Fehler, den ich in XCode bekommen

** * App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException' beenden, Grund: 'Ein AVPlayerItem kann nicht mit mehr als einer Instanz von AVPlayer verbunden sein

+1

Nach meinem Crash-Protokolle Berichte beheben, scheint dieses Problem zu sind in iOS 9 verschwunden, ohne zu ändern, wie ich MPMoviePlayerViewController verwende. – 0xced

+0

Vielen Dank für Ihr Feedback! –

Antwort

3

Ok, es scheint, dass dies passiert, wenn Sie einen MPMoviePlayerViewController verwenden und versuchen, den Player wiederzuverwenden. In meinem Fall habe ich den Player als Unteransicht verwendet.

Grundsätzlich war meine Lösung, den Player NULL zu setzen und es jedes Mal neu zu starten, wenn ich ein neues Video abspielen werde.

Code: (Bare daran, dass ich MPMoviePlayerViewController als Subview wurde unter Verwendung)

- (void)initPlayer { 

    if (self.player != NULL) { 
     [self.player.view removeFromSuperview]; 
     self.player = NULL; 
    } 
    self.player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:movie]]; 

    if (IsIPad()) { 
     width = 730; 
     height = 412; 
    } else { 
     width = 320; 
     height = 180; 
    } 

    self.player.view.frame = CGRectMake(0, 61, width, height); 
    self.player.view.hidden = true; 
    self.player.moviePlayer.fullscreen = false; 
    self.player.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 

    [self.viewController.view addSubview:self.player.view]; 
} 
+0

Stürzt in iOS 9 ab, aber ich kann nicht lokal reproduzieren. –

+0

@RomanTruba versuchen mit AVVideoPlayer –

+0

AVPlayer ist der beste Player, um Videos abzuspielen –

0
if(avPlayer==nil) 
{ 

    avPlayer = [AVPlayer playerWithPlayerItem:_avPlayerItem]; 
}else{ 
    [avPlayer replaceCurrentItemWithPlayerItem:_avPlayerItem]; 

} 

dies diese Art von Problemen