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

标签 objective-c ios video

我正在 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/

相关文章:

html - 适用于所有主要浏览器的视频编解码器

ipad - 在 presentModalViewController : crashes 之后释放 MFMailComposeViewController

ios - View 未填充数据 AFNetworking

ios - UICollectionView:ScrollToItem 到中心单元格在水平 Collection View 上不起作用

java - java中如何删除文件?

android - 对正在播放的视频应用效果

ios - 连续找到5个

objective-c - 具有 CATransaction 的 CALayer 动画在 View 调整大小时之前表现不同

objective-c - MKannotationView 与 UIButton 作为 subview ,按钮不响应

ios - iOS 应用程序的 Facebook 登录在应用程序外部发生