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 应用程序或默认视频应用程序也相同。 在黑屏期间,应向用户显示 ActivityIndi​​cator 或“正在加载”消息。这是合理的。 最后一般来说,视频大小和质量越大,加载所需的时间就越长。 如果你想要准确的加载时间,你应该得到通知。

参考示例代码。

- (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 上动画图像(如电影)的方法

横向模式下的 iPhone MPMoviePlayer

MPMoviePlayer 声音在模拟器和 ipad 设备中工作,但在 iPhone 设备中不工作

帮我选择合适的 iPhone 音频类 - MPMoviePlayer vs AVAudioPlayer vs MPMusicPlayer

如何检测 iPhone MPMoviePlayer 控件何时出现/消失?