2015-07-03 20 views
14

我剛剛收到消息表單crashlytics,說我的應用程序穩定性下降了!基本上這是在iOS(8.4)中最後一次更新時發生崩潰的崩潰,並且在以前的版本中並不存在。iOS 8.4 AVFoundation _attachToPlayer或_attachToFigPlayer崩潰|一個AVPlayerItem不能與多個AVPlayer實例相關

你知道什麼是_attachToFigPlayer或者是什麼導致了這種情況?它發生在兩個應用程序中,一個在Obj-c中,另一個在Swift中。

謝謝大家!

原始崩潰:(_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 

原始崩潰:(_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 

更新:

這是我在XCode中

得到錯誤** *由於未捕獲異常'NSInvalidArgumentException'而終止應用程序,原因:'一個AVPlayerItem可以不是與多個AVPlayer的實例相關聯的。

+1

據我崩潰日誌報告,這個問題似乎已經在iOS 9中消失了,而沒有改變我使用MPMoviePlayerViewController的方式。 – 0xced

+0

感謝您的反饋! –

回答

3

好吧,它會在使用MPMoviePlayerViewController並嘗試重新使用播放器時發生這種情況。在我的情況下,我使用播放器作爲子視圖。

基本上我的解決方法是設置NULL播放器,並在每次播放新視頻時重新啓動它。

代碼:(記住裸露,我用MPMoviePlayerViewController作爲一個子視圖)

- (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

在iOS 9中發生崩潰,但我無法在本地重現。 –

+0

@RomanTruba嘗試使用AVVideoPlayer –

+0

AVPlayer是播放視頻的最佳選手 –

0
if(avPlayer==nil) 
{ 

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

} 

這將解決此類問題

相關問題