iPhone:MPMoviePlayer 最初在几分之一秒内显示黑色背景
Posted
技术标签:
【中文标题】iPhone:MPMoviePlayer 最初在几分之一秒内显示黑色背景【英文标题】:iPhone:MPMoviePlayer shows black background for fraction of second initially 【发布时间】:2012-08-01 11:26:28 【问题描述】:在我的应用程序中,我在包含以下代码的视图之一上播放视频
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"bgVideo" ofType:@"mov"]];
player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[player setControlStyle:MPMovieControlStyleNone];
player.view.frame = CGRectMake(35, 190, 245, 156);
[self.view addSubview:player.view];
[player play];
[player.view setBackgroundColor:[UIColor clearColor]];
我在 viewWillAppear 方法上写了这段代码
但是当我最初来到这个视图时,我的 MPMoviePlayerController 在开始播放视频之前会显示黑屏。
我不想再黑屏了。
我该怎么办?
提前谢谢。
【问题讨论】:
相关:***.com/questions/8429701/… 【参考方案1】:也许 player 一个强大的属性并合成它。它奏效了。
也应该适用于您的情况。
我的经验,不会再有问题了。如果不能工作请回复。
Edit
我有点误会了。
开始前显示黑屏,因为视频没有加载。
您无法预测加载视频所需的时间。即使您将播放器分配给 viewWillApper 方法。会出现黑屏。 这个黑屏控制不了。 YouTube 应用程序或默认视频应用程序也相同。 在黑屏期间,应向用户显示 ActivityIndicator 或“正在加载”消息。这是合理的。 最后一般来说,视频大小和质量越大,加载所需的时间就越长。 如果你想要准确的加载时间,你应该得到通知。
参考示例代码。
- (void)viewWillAppear:(BOOL)animated
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]];
player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[player setControlStyle:MPMovieControlStyleNone];
player.view.frame = CGRectMake(35, 190, 245, 156);
[self.view addSubview:player.view];
[player.view setBackgroundColor:[UIColor clearColor]];
player.shouldAutoplay = NO;
[player prepareToPlay];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadMoviePlayerStateChanged:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:self.player];
[super viewWillAppear:animated];
- (void)loadMoviePlayerStateChanged:(NSNotification *)noti
int loadState = self.player.loadState;
if(loadState & MPMovieLoadStateUnknown)
NSLog(@"MPMovieLoadStateUnknown");
return;
else if(loadState & MPMovieLoadStatePlayable)
NSLog(@"MPMovieLoadStatePlayable");
[player play];
else if(loadState & MPMovieLoadStatePlaythroughOK)
NSLog(@"MPMovieLoadStatePlaythroughOK");
else if(loadState & MPMovieLoadStateStalled)
NSLog(@"MPMovieLoadStateStalled");
【讨论】:
@property (strong, nonatomic) MPMoviePlayerController *player;我写了这段代码,但它会导致同样的问题。以上是关于iPhone:MPMoviePlayer 最初在几分之一秒内显示黑色背景的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MPMoviePlayer 播放期间启用 iPhone 自动锁定?
不使用 MPMoviePlayer 在 iPhone 上动画图像(如电影)的方法
MPMoviePlayer 声音在模拟器和 ipad 设备中工作,但在 iPhone 设备中不工作
帮我选择合适的 iPhone 音频类 - MPMoviePlayer vs AVAudioPlayer vs MPMusicPlayer