我在iPhone上播放视频时遇到问题。我在应用程序包中有一个文件,我试图在MPMoviePlayerController
中播放,但它只是显示黑屏。这是以下代码:
-(UIView*)createVideoPlayerOfWidth:(CGFloat)width
{
// The width for one of these can be half of the max width
//CGFloat widthAndHeight = width / 2.0f;
// TODO: Create a video player
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myVideo" ofType:@"mov"]];
MPMoviePlayerController *playerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
[playerController prepareToPlay];
[playerController setShouldAutoplay:NO];
[playerController setScalingMode:MPMovieScalingModeAspectFit];
[playerController setControlStyle:MPMovieControlStyleEmbedded];
[playerController setRepeatMode:MPMovieRepeatModeNone];
// Resize the thumbnail of the video
[[playerController view] setFrame:CGRectMake(0, 0, width, width)];
return [playerController view];
}
它返回一个有效的URL(如果找不到该文件,pathForResource将返回nil)。我只是将一个subView(由函数返回的视图)添加到滚动视图中,将它显示在屏幕上。我一直在努力解决这个问题,现在已经无处可去了。非常感谢任何帮助。
谢谢!
答案 0 :(得分:2)
确保您保留对MPMoviePlayerController
实例的引用:
如果这是一个ARC项目,那么当playerController
返回时createVideoPlayerOfWidth
将被销毁,您的视频可能无法播放。您应该将播放器存储在strong
实例变量或属性中。
您可以在视图控制器文件的顶部添加类似的内容:
@interface MyViewController ()
@property (nonatomic,retain) MPMoviePlayerController *player;
@end
在创建MPMoviewPlayerController
实例后插入此内容:
self.player = playerController;
如果你没有使用ARC,这可能不是问题,但你仍然应该在实例变量中保留一个引用,以便以后可以释放它。