i got a crash affecting about 10% of my users, yet I'm unable to reproduce it, and don't know exactly when this happens.
Crashlytics reports about half of the crashing users having the App not in focus, I.e. doing background audio or AirPlay. The App plays back an HLS video stream, and switches to an audio only version when backgrounded.
Any ideas what's wrong, or why there would be multiple AVPlayer instances from my singleton Player class?
Thanks!
Exception Type:
NSInvalidArgumentException
Reason:
An AVPlayerItem cannot be associated with more than one instance of AVPlayer
Fatal Exception
Latest Crash: 4/06/2013 at 8:48:46 UTC+0200
0 CoreFoundation __exceptionPreprocess + 162
1 libobjc.A.dylib objc_exception_throw + 30
2 AVFoundation -[AVPlayerItem _attachToPlayer:] + 188
3 AVFoundation -[AVPlayer _attachItem:andPerformOperation:withObject:] + 336
4 AVFoundation -[AVPlayer _insertItem:afterItem:] + 26
5 AVFoundation -[AVQueuePlayer insertItem:afterItem:] + 136
6 MediaPlayer __block_global_4 + 520
7
...
libdispatch.dylib _dispatch_call_block_and_release + 10
14
It seems to be solved by explicitly stopping the playing before setting a new URL, e.g.
[moviePlayer stop];
moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[moviePlayer setContentURL:[NSURL URLWithString:[videos objectForKey:quality]]];
Found the cause for this issue ... If MovieViewController was created, and it's currently buffering (i.e state != MPMovieLoadStatePlayable or MPMovieLoadStatePlaythroughOK) calling 'play' method will crash the app with this exception.
Try to set the ContentURL after the SourceType
moviePlayerController_ = [[MPMoviePlayerViewController alloc] init];
moviePlayerController_.movieSourceType = MPMovieSourceTypeStreaming;
[moviePlayerController_.moviePlayer setContentURL:url];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With