gpt4 book ai didi

iphone - MPMoviePlayerController - 无法在 < 3GS 上播放我的应用程序中的电影(3GS 没问题)

转载 作者:行者123 更新时间:2023-12-03 20:11:39 27 4
gpt4 key购买 nike

在我的应用程序中,我正在播放一些电影。我已经检查了电影的信息,它们似乎在 MPMoviePlayerController 应该能够处理的范围内(比特率等)

它们通过 URL 进行流式传输,并且只能在 3GS 上播放,仅此而已。我尝试从 MPMoviePlayerController 中的 MPMoviePlayerContentPreloadDidFinishNotificationMPMoviePlayerPlaybackDidFinishNotification 的通知中收集错误,但我收到了 的无用错误字符串userInfo 键在通知中,除了电影无法播放这一事实之外,它什么也没告诉我。

我正在测试的 URL 是:http://movies.apple.com/movies/independent/lawabidingcitizen/lawabidingcitizen_h.480.mov

在 3G 或 2G iPhone 上,MPMoviePlayerController 会出现,它会短暂尝试加载影片,但随后会淡出回其来源的 View Controller 。

有谁知道为什么我无法仅在 3GS 上串流和播放上述 URL?我确信这是内存问题,但我在有 50MB 可用内存的 2G iPhone 上尝试过,但仍然无法正常工作。

我正在使用 Apple 自己的流媒体电影示例应用程序中的一段代码来启动电影:

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://movies.apple.com/movies/independent/lawabidingcitizen/lawabidingcitizen_h.480.mov"];
if (mp) {
self.moviePlayer = mp;
[mp release];
[self.moviePlayer play];
}

谢谢

最佳答案

我认为发布部分给您带来了麻烦,我正在使用此代码并且工作正常:

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

//// //// //// //// //// //// //// //// //// //// //// //// //// //// //// //// /
// ONLY FOR IOS 3.2 or later
if ( kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_3_2 ) {

// May help to reduce latency
[moviePlayer prepareToPlay];

/// //// //// //// //// //// //// //// //// //// //// //// //// //// /
// Set the correct frame for Movie Controller.
moviePlayer.view.frame = self.view.frame;

/// //// //// //// //// //// //// //// //// //// //// //// //// //// /
// Autorezing the view, allows him to adjust with the orientation.
moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
moviePlayer.view.autoresizesSubviews = YES;

/// //// //// //// //// //// //// //// //// //// //// //// //// //// /
// Add to screen.
[self.view addSubview:moviePlayer.view];
}

//// //// //// ///// //// //// ///// //// //// ///// //// //// ///// //// //// /
// Older than 3.2
else {
// Play Movie.
[moviePlayer play];

// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
}

此代码是为所有 iOS 准备的。如果您只支持< 3.2,请使用正确的部分。

您应该实现一个方法moviePlayBackDidFinish:以在电影播放完毕时接收通知,如下所示:

//// //// //// ///// //// //// ///// //// //// ///// //// //// ///// //// //// /
// Notification called when the movie finished playing. This Call is only for iOS 3.2
- (void) moviePlayBackDidFinish:(NSNotification*)notification {
// Unregister.
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];

// Your finish code here.
}

您必须在 UIViewController @interface 中声明 moviePlayer 并在 dealloc: 方法中声明 dealloc。

关于iphone - MPMoviePlayerController - 无法在 < 3GS 上播放我的应用程序中的电影(3GS 没问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2184743/

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