断言失败:电影播放器的激活状态错误 (1)
我正在 iPad 应用程序的一个页面上播放视频 (m4v),然后它会转到另一个视图控制器来播放另一个视频。 它播放得很好,但是当第二个视频播放完毕时,它会抛出断言失败。
错误是:
*** Assertion failure in -[MPMoviePlayerControllerNew _moviePlayerDidBecomeActiveNotification:], /SourceCache/MobileMusicPlayer_Sim/MobileMusicPlayer-1137.39/SDK/MPMoviePlayerController.m:1236
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'movie player <MPMoviePlayerControllerNew: 0x623f6b0> has wrong activation state (1)'
*** Call stack at first throw:
(
0 CoreFoundation 0x015e35a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x01737313 objc_exception_throw + 44
2 CoreFoundation 0x0159bef8 +[NSException raise:format:arguments:] + 136
3 Foundation 0x001ea3bb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 MediaPlayer 0x00522850 -[MPMoviePlayerControllerNew _moviePlayerDidBecomeActiveNotification:] + 204
5 Foundation 0x00159669 _nsnote_callback + 145
6 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
7 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
8 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
9 MediaPlayer 0x00521e08 -[MPMoviePlayerControllerNew _postNotificationName:object:] + 56
10 MediaPlayer 0x005293f7 -[MPMoviePlayerControllerNew _ensureActive] + 158
11 MediaPlayer 0x005242e8 -[MPMoviePlayerControllerNew setControlStyle:] + 45
12 Restore Sensor 0x00073cfe -[MRSPresentationSlide2 viewDidLoad] + 334
13 UIKit 0x00958089 -[UIViewController view] + 179
14 Restore Sensor 0x00071ed8 -[MRSPresentationController pushViewOnScreen:] + 632
15 Restore Sensor 0x0007395d -[MRSPresentationSlide1 moviePlayBackDidFinish:] + 365
16 Foundation 0x00159669 _nsnote_callback + 145
17 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
18 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
19 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
20 MediaPlayer 0x00521d24 -[MPMoviePlayerControllerNew _postDidFinishNotificationWithUserInfo:] + 69
21 Foundation 0x00159669 _nsnote_callback + 145
22 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
23 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
24 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
25 MediaPlayer 0x0053d974 -[MPAVController _itemPlaybackDidEndNotification:] + 491
26 Foundation 0x00159669 _nsnote_callback + 145
27 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
28 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
29 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
30 Celestial 0x025907a7 -[NSObject(NSObject_AVShared) postNotificationWithDescription:] + 176
31 Celestial 0x02594a7d -[AVController itemHasFinishedPlayingNotification:] + 169
32 Celestial 0x025989ca -[AVController fpItemNotification:sender:] + 2177
33 Celestial 0x025a2a8d -[AVPlaybackItem fpItemNotificationInfo:] + 1473
34 Celestial 0x02590f51 -[AVObjectRegistry safeInvokeWithDescription:] + 211
35 Foundation 0x0016e94e __NSThreadPerformPerform + 251
36 CoreFoundation 0x015c48ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
37 CoreFoundation 0x0152288b __CFRunLoopDoSources0 + 571
38 CoreFoundation 0x01521d86 __CFRunLoopRun + 470
39 CoreFoundation 0x01521840 CFRunLoopRunSpecific + 208
40 CoreFoundation 0x01521761 CFRunLoopRunInMode + 97
41 GraphicsServices 0x0304f1c4 GSEventRunModal + 217
42 GraphicsServices 0x0304f289 GSEventRun + 115
43 UIKit 0x008b6c93 UIApplicationMain + 1160
44 Restore Sensor 0x00002121 main + 177
45 Restore Sensor 0x00002065 start + 53
)
terminate called throwing an exception
有人知道为什么我会收到此错误吗?
I am playing a video (m4v) in an iPad app on one page, then it goes to a different View Controller which plays another video.
It plays fine, but when the second video finishes playing it then throws an Assertion failure.
The error is:
*** Assertion failure in -[MPMoviePlayerControllerNew _moviePlayerDidBecomeActiveNotification:], /SourceCache/MobileMusicPlayer_Sim/MobileMusicPlayer-1137.39/SDK/MPMoviePlayerController.m:1236
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'movie player <MPMoviePlayerControllerNew: 0x623f6b0> has wrong activation state (1)'
*** Call stack at first throw:
(
0 CoreFoundation 0x015e35a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x01737313 objc_exception_throw + 44
2 CoreFoundation 0x0159bef8 +[NSException raise:format:arguments:] + 136
3 Foundation 0x001ea3bb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 MediaPlayer 0x00522850 -[MPMoviePlayerControllerNew _moviePlayerDidBecomeActiveNotification:] + 204
5 Foundation 0x00159669 _nsnote_callback + 145
6 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
7 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
8 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
9 MediaPlayer 0x00521e08 -[MPMoviePlayerControllerNew _postNotificationName:object:] + 56
10 MediaPlayer 0x005293f7 -[MPMoviePlayerControllerNew _ensureActive] + 158
11 MediaPlayer 0x005242e8 -[MPMoviePlayerControllerNew setControlStyle:] + 45
12 Restore Sensor 0x00073cfe -[MRSPresentationSlide2 viewDidLoad] + 334
13 UIKit 0x00958089 -[UIViewController view] + 179
14 Restore Sensor 0x00071ed8 -[MRSPresentationController pushViewOnScreen:] + 632
15 Restore Sensor 0x0007395d -[MRSPresentationSlide1 moviePlayBackDidFinish:] + 365
16 Foundation 0x00159669 _nsnote_callback + 145
17 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
18 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
19 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
20 MediaPlayer 0x00521d24 -[MPMoviePlayerControllerNew _postDidFinishNotificationWithUserInfo:] + 69
21 Foundation 0x00159669 _nsnote_callback + 145
22 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
23 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
24 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
25 MediaPlayer 0x0053d974 -[MPAVController _itemPlaybackDidEndNotification:] + 491
26 Foundation 0x00159669 _nsnote_callback + 145
27 CoreFoundation 0x015bb9f9 __CFXNotificationPost_old + 745
28 CoreFoundation 0x0153a93a _CFXNotificationPostNotification + 186
29 Foundation 0x0014f20e -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
30 Celestial 0x025907a7 -[NSObject(NSObject_AVShared) postNotificationWithDescription:] + 176
31 Celestial 0x02594a7d -[AVController itemHasFinishedPlayingNotification:] + 169
32 Celestial 0x025989ca -[AVController fpItemNotification:sender:] + 2177
33 Celestial 0x025a2a8d -[AVPlaybackItem fpItemNotificationInfo:] + 1473
34 Celestial 0x02590f51 -[AVObjectRegistry safeInvokeWithDescription:] + 211
35 Foundation 0x0016e94e __NSThreadPerformPerform + 251
36 CoreFoundation 0x015c48ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
37 CoreFoundation 0x0152288b __CFRunLoopDoSources0 + 571
38 CoreFoundation 0x01521d86 __CFRunLoopRun + 470
39 CoreFoundation 0x01521840 CFRunLoopRunSpecific + 208
40 CoreFoundation 0x01521761 CFRunLoopRunInMode + 97
41 GraphicsServices 0x0304f1c4 GSEventRunModal + 217
42 GraphicsServices 0x0304f289 GSEventRun + 115
43 UIKit 0x008b6c93 UIApplicationMain + 1160
44 Restore Sensor 0x00002121 main + 177
45 Restore Sensor 0x00002065 start + 53
)
terminate called throwing an exception
Anyone know why I would be getting this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我发现了问题。
第一个视频没有删除 MPMoviePlayerPlaybackDidFinishNotification 通知,因此第二个视频被加载多次。
I found the problem.
The first video was not removing the MPMoviePlayerPlaybackDidFinishNotification notification and so the second video was getting loaded multiple times.
如果您有多个 MoviePlayer,请确保仅在该播放器上注册以获取通知。例如:
这可以确保您只收到来自正确玩家的通知。
这至少对我来说是解决了。
If you have multiple MoviePlayers, make sure that you register only on that exact player for notifications. e.g.:
This makes sure, that you only receive the notifications from the correct player.
That fixed it for me at least.
在再次初始化之前停止播放器。
[玩家名停止];
Just Stop the Player Before initialise it Again .
[PlayerName Stop];