gpt4 book ai didi

objective-c - MPMoviePlayerController 不加载滚动库中的第一个视频

转载 作者:行者123 更新时间:2023-11-29 13:45:34 26 4
gpt4 key购买 nike

我正在 iOS SDK 4.3 上开发。我有一个水平滚动的分页画廊,可以显示来自远程提要的图像或视频。对于分页 View ,我使用的是公开可用的 ATPagingView:页面的重用类似于 TableViewCells。但是对于视频,我使用的是单个 MPMoviePlayerController,我将其 .view 属性分配给多个页面作为 subview (我知道,我知道...):

moviePlayerController = [[MPMoviePlayerController alloc] init];
moviePlayerController.repeatMode = MPMovieRepeatModeNone;
moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;
moviePlayerController.shouldAutoplay = false;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieLoadStateChangeAction:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];

您可以看到我已经注册了 MoviePlayer 事件 LoadState 通知。当新页面出现在屏幕上时,如果需要,我会开始加载视频:

- (void)currentPageDidChangeInPagingView:(ATPagingView *)pagingView
{
if (pagingView.currentPageIndex < 0)
return;

NSLog(@"currentPageDidChangeInPagingView");
GalleryPageView *currentPage = (GalleryPageView *)[pagingView viewForPageAtIndex:pagingView.currentPageIndex];
if (![currentPage.gestureRecognizers count]) {
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetZoom)];
recognizer.numberOfTapsRequired = 2;
[currentPage.zoomView addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];
}

moviePlayButton.hidden = YES;

[activityView stopAnimating];
FeedItem *feedItem = (FeedItem *)[dataRoot objectAtIndex:pagingView.currentPageIndex];
if (feedItem.contentType == FeedContentTypeMovie) {
moviePlayerController.contentURL = [NSURL URLWithString:feedItem.movieUrl];
[moviePlayerController prepareToPlay];
[activityView startAnimating];
}

现在,IFF 第一个 页面包含一个视频,即使在我调用 moviePlayerController.prepareToPlay 之后,它也不会加载:没有触发 loadState 事件。以下页面反而按预期工作。我尝试在 MPlayerController 初始化时预加载固定视频,但在这种情况下,固定视频已正确加载 (MPMovieLoadState == 3),而第一页上的视频导致 MPMovieLoadStateUnknown 发生更改。

电影网址正确。当我从第 2 页返回到第 1 页时,第一个视频已加载 (MPMovieLoadState == 3),但它没有显示。

您建议调查什么?共享 View 架构有那么可怕吗?毕竟,它适用于以下页面。 prepareToPlay 是否有任何已知的奇怪行为?例如,如果 View 被任何人“虐待”,MPC 是否可能生气,然后拒绝加载内容?您还会如何解释 MPMovieLoadStateUnknown?我很确定没有其他 MPC 的幽灵实例在乱搞(我读过它可能是个问题)。

谢谢你,抱歉发了这么长的帖子。

最佳答案

我不得不最终使用 AVPlayer,因为我的代码中有一些与此非常相似的东西。

关于objective-c - MPMoviePlayerController 不加载滚动库中的第一个视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com