首页 \ 问答 \ MPMoviePlayer错误的激活状态?(MPMoviePlayer wrong activation state?)

MPMoviePlayer错误的激活状态?(MPMoviePlayer wrong activation state?)

我正在使用内置的MPMoviePlayerController播放视频。我在使用两个MPMoviePlayerControllers时遇到了问题(请注意,在同一时间没有播放两个视频)。 我可以在第一个控制器上播放尽可能多的视频,在完成后处理它,然后分配另一个MPMoviePlayerController。 一旦我在第二个控制器上设置controlStyle,我就会得到一个SIGABRT

因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'电影播放器​​的激活状态错误(1)

我在网上搜索过,在堆栈溢出时发现了类似的问题。 那家伙说他忘了删除播放完成的通知。 我相信我已经使用[[NSNotificationCenter defaultCenter] removeObserver:self]正确完成了这项工作。

我还是得到了崩溃。 相当令人沮丧!

我不明白为什么只要它们不同时播放就不可能使用两个控制器。 我宁愿不必深入研究AVPlayer的内容,只是为了让视频正常运行。

谢谢!

编辑:注释掉controlStyle分配仍然会导致崩溃。 下面是已发布的callstack,以及该类中的一些重要方法。

- (void) makePlayer;
{
[player.view removeFromSuperview];
[player release];
player = [MPMoviePlayerController new];
player.view.frame = self.bounds;
player.view.hidden = YES;
player.controlStyle = MPMovieControlStyleNone;
player.scalingMode = MPMovieScalingModeNone;
[self addSubview: player.view];
}

- (void) dealloc;
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
[player.view removeFromSuperview];
[player release];
[super dealloc];
}

- (void) setMovieByName: (NSString *) name;
{
[self makePlayer];
player.shouldAutoplay = NO;
[player setContentURL: [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: name ofType: @"mov"]]];
[player stop];
[player prepareToPlay];
[[NSNotificationCenter defaultCenter] removeObserver: self];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(movieDimensionsKnown:) name:MPMovieNaturalSizeAvailableNotification object: player];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(playbackStateChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object: player];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object: player];
}

- (void) playbackFinished: (NSNotification *) n
{   
player.view.hidden = YES;
if ([delegate respondsToSelector: @selector(moviePlayerImageViewPlaybackDidFinish:)])
    [delegate moviePlayerImageViewPlaybackDidFinish: self];
}

I am using the built in MPMoviePlayerController for playing videos.I've run in to a problem when using two MPMoviePlayerControllers (Note that no two videos are played at the exact same time). I can play as many videos as I want on the first controller, dispose of it when I'm done, and then allocate another MPMoviePlayerController. As soon as I set the controlStyle on the second controller, I get a SIGABRT with

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'movie player has wrong activation state (1)

I have searched online and found a similar problem on stack overflow. The guy said he had forgotten to remove the playback finished notification. I believe I have done this properly using [[NSNotificationCenter defaultCenter] removeObserver: self];

I still get the crash. Rather frustrating!

I don't see why it wouldn't be possible to use two controllers as long as they aren't being played at the same time. I'd rather not have to dig in to AVPlayer stuff just to get videos working.

Thanks!

Edit: Commenting out the controlStyle assignment still results in a crash. Below is the posted callstack, along with a few important methods from the class.

- (void) makePlayer;
{
[player.view removeFromSuperview];
[player release];
player = [MPMoviePlayerController new];
player.view.frame = self.bounds;
player.view.hidden = YES;
player.controlStyle = MPMovieControlStyleNone;
player.scalingMode = MPMovieScalingModeNone;
[self addSubview: player.view];
}

- (void) dealloc;
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
[player.view removeFromSuperview];
[player release];
[super dealloc];
}

- (void) setMovieByName: (NSString *) name;
{
[self makePlayer];
player.shouldAutoplay = NO;
[player setContentURL: [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: name ofType: @"mov"]]];
[player stop];
[player prepareToPlay];
[[NSNotificationCenter defaultCenter] removeObserver: self];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(movieDimensionsKnown:) name:MPMovieNaturalSizeAvailableNotification object: player];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(playbackStateChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object: player];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object: player];
}

- (void) playbackFinished: (NSNotification *) n
{   
player.view.hidden = YES;
if ([delegate respondsToSelector: @selector(moviePlayerImageViewPlaybackDidFinish:)])
    [delegate moviePlayerImageViewPlaybackDidFinish: self];
}

原文:https://stackoverflow.com/questions/6783596
更新时间:2023-12-19 19:12

最满意答案

你不应该单引用你的表名:

$stmt = mysqli_prepare( $db_conx, "CREATE TABLE " .$user. "_books (
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id)
)"
);

另外, 不要在表名中使用点。

另外,根据@ Fred-ii-, 不要在表名中使用破折号


You shouldn't single-quote around your table name:

$stmt = mysqli_prepare( $db_conx, "CREATE TABLE " .$user. "_books (
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id)
)"
);

Also, don't use a dot in a table name..

Also, per @Fred-ii-, don't use a dash in your table names.

相关问答

更多

相关文章

更多

最新问答

更多
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)
  • 是否可以嵌套hazelcast IMaps?(Is it possible to nest hazelcast IMaps? And whick side effects can I expect? Is it a good Idea anyway?)
  • UIViewAnimationOptionRepeat在两个动画之间暂停(UIViewAnimationOptionRepeat pausing in between two animations)
  • 在x-kendo-template中使用Razor查询(Using Razor query within x-kendo-template)
  • 在BeautifulSoup中替换文本而不转义(Replace text without escaping in BeautifulSoup)
  • 如何在存根或模拟不存在的方法时配置Rspec以引发错误?(How can I configure Rspec to raise error when stubbing or mocking non-existing methods?)
  • asp用javascript(asp with javascript)
  • “%()s”在sql查询中的含义是什么?(What does “%()s” means in sql query?)
  • 如何为其编辑的内容提供自定义UITableViewCell上下文?(How to give a custom UITableViewCell context of what it is editing?)
  • c ++十进制到二进制,然后使用操作,然后回到十进制(c++ Decimal to binary, then use operation, then back to decimal)
  • 以编程方式创建视频?(Create videos programmatically?)
  • 无法在BeautifulSoup中正确解析数据(Unable to parse data correctly in BeautifulSoup)
  • webform和mvc的区别 知乎
  • 如何使用wadl2java生成REST服务模板,其中POST / PUT方法具有参数?(How do you generate REST service template with wadl2java where POST/PUT methods have parameters?)
  • 我无法理解我的travis构建有什么问题(I am having trouble understanding what is wrong with my travis build)
  • iOS9 Scope Bar出现在Search Bar后面或旁边(iOS9 Scope Bar appears either behind or beside Search Bar)
  • 为什么开机慢上面还显示;Inetrnet,Explorer
  • 有关调用远程WCF服务的超时问题(Timeout Question about Invoking a Remote WCF Service)