Iphone MPMoviePlayerViewController不播放视频或显示控件
这是我的代码,应该播放嵌入在子视图中的视频,但它只显示没有控件的静态图像Iphone MPMoviePlayerViewController不播放视频或显示控件,iphone,ios,objective-c,video,mpmovieplayercontroller,Iphone,Ios,Objective C,Video,Mpmovieplayercontroller,这是我的代码,应该播放嵌入在子视图中的视频,但它只显示没有控件的静态图像 - (void)displayVideo:(NSURL *)videoURL { if (self.mediaPlayer) { [self.mediaPlayer.view removeFromSuperview]; self.mediaPlayer = nil; } self.mediaPlayer = [[MPMoviePlayerViewController
- (void)displayVideo:(NSURL *)videoURL
{
if (self.mediaPlayer) {
[self.mediaPlayer.view removeFromSuperview];
self.mediaPlayer = nil;
}
self.mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self.mediaPlayer.moviePlayer prepareToPlay];
self.mediaPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.mediaPlayer.view.frame = CGRectMake(0, 0, self.mediaView.bounds.size.width, self.mediaView.bounds.size.height);
[self.mediaView addSubview:self.mediaPlayer.view];
[self.mediaPlayer.moviePlayer play];
}
我还尝试直接加载媒体播放器,其中mediaPlayer是MPMoviePlayerController,而不是mpmovieplayervicewcontroller,但在只有黑色视图的情况下,加载更少
self.mediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[self.mediaPlayer prepareToPlay];
self.mediaPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.mediaPlayer.view.frame = CGRectMake(0, 0, self.mediaView.bounds.size.width, self.mediaView.bounds.size.height);
[self.mediaView addSubview:self.mediaPlayer.view];
[self.mediaPlayer play];
谢谢您的帮助。第一个代码完全错误。使用MPMoviePlayerViewController的唯一方法是作为显示视图控制器(
presentViewController:…
);你不能抓住它的观点,试图把它塞进你自己的界面
第二种可能性要大得多。因此,这里有一些事情需要考虑:
有效吗?你怎么知道的?不,说真的。再想想格式,因为并非所有视频格式都可以在iOS下播放videoURL
是否保留电影播放器控制器?再次,仔细观察;这是至关重要的。它必须具有self.mediaPlayer
或strong
策略retain
- 您的界面中是否有其他媒体播放器控制器视图?我注意到,在第二个代码中,您忘记删除前一个代码。这是至关重要的!这种观点只能有一种
MPMovieControlStyleEmbedded
;这是此配置中的默认设置。)
最后,与工作代码进行比较可能会有所帮助。我书中的代码确实有效:
通过下载此示例,您可以证明:
首先检查您的视频URL是否有效?iOS中的视频技术支持使用.mov、.mp4、.m4v和.3gp文件扩展名并使用以下压缩标准播放电影文件: 1) H.264视频,高达1.5 Mbps,640 x 480像素,每秒30帧,低复杂度版本的H.264基线配置文件,AAC-LC音频高达160 Kbps,48 kHz,立体声音频为.m4v、.mp4和.mov文件格式
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:strSelectedVideoUrl]];
player.scalingMode = MPMovieScalingModeAspectFit;
player.movieSourceType = MPMovieSourceTypeFile;
player.view.frame = CGRectMake(0, 45, 320, 400);
player.shouldAutoplay = YES;
[player prepareToPlay];
[self.view addSubview:player.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:player];
[player play];
}
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player1 = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player1];
[player stop];
[player1.view removeFromSuperview];
//[player1 release];
player1 = nil;
[self.navigationController popViewControllerAnimated:YES];
}
2) H.264视频,高达768 Kbps,320 x 240像素,每秒30帧,基线配置文件高达1.3级,AAC-LC音频高达160 Kbps,48 kHz,立体声音频为.m4v、.mp4和.mov文件格式
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:strSelectedVideoUrl]];
player.scalingMode = MPMovieScalingModeAspectFit;
player.movieSourceType = MPMovieSourceTypeFile;
player.view.frame = CGRectMake(0, 45, 320, 400);
player.shouldAutoplay = YES;
[player prepareToPlay];
[self.view addSubview:player.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:player];
[player play];
}
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player1 = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player1];
[player stop];
[player1.view removeFromSuperview];
//[player1 release];
player1 = nil;
[self.navigationController popViewControllerAnimated:YES];
}
3) MPEG-4视频,高达2.5 Mbps,640 x 480像素,每秒30帧,简单配置文件,AAC-LC音频高达160 Kbps,48 kHz,立体声音频为.m4v、.mp4和.mov文件格式
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:strSelectedVideoUrl]];
player.scalingMode = MPMovieScalingModeAspectFit;
player.movieSourceType = MPMovieSourceTypeFile;
player.view.frame = CGRectMake(0, 45, 320, 400);
player.shouldAutoplay = YES;
[player prepareToPlay];
[self.view addSubview:player.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:player];
[player play];
}
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player1 = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player1];
[player stop];
[player1.view removeFromSuperview];
//[player1 release];
player1 = nil;
[self.navigationController popViewControllerAnimated:YES];
}
试试这个,它对我很有效
NSURL *movieURL = [NSURL URLWithString:@"http://........"];
// Initialize a movie player object with the specified URL
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
self.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
[self.moviePlayer.view setFrame:self.view.bounds];
[self.view addSubview:self.moviePlayer.view];
[self.moviePlayer play];
结果如何?