【问题标题】:AVPlayer keeps running in backgroundAVPlayer 一直在后台运行
【发布时间】:2011-07-04 08:52:38
【问题描述】:

我正在使用 AVPlayer 播放在线电影。它工作正常。现在的问题是,当我在电影开始播放之前从视图中弹出时,后台进程一直在运行。当影片加载完毕后,它开始在后台播放。

我试图在 viewWillDisappear 中释放播放器。但它不起作用。

- (void)viewWillDisappear:(BOOL)animated
{
    if (self.player.currentItem.status != AVPlayerItemStatusReadyToPlay) 
    {
        [self.player.currentItem removeObserver:self forKeyPath:kRateKey];
        [self.player.currentItem removeObserver:self forKeyPath:kStatusKey];
        [self.player.currentItem removeObserver:self forKeyPath:kTimedMetadataKey];
    }
    [self.player pause];
    [self.player release];
    [self.playerLayerView release];

    [super viewWillDisappear:animated];
}

有人可以帮忙吗? 提前致谢

【问题讨论】:

  • 你是否在任何地方保留了播放器对象,因为释放后它仍然存在,所以你需要检查播放器对象的保留计数
  • 感谢您的建议。会检查的。

标签: iphone avplayer


【解决方案1】:
- (void)viewWillDisappear:(BOOL)animated
        if (self.player.playing==YES) {
            [self.player stop];
            self.player=nil;
        }
    }

【讨论】:

  • 这仅在视频开始播放时有效。当视频还没有准备好播放并且线程在后台工作时,我会遇到这个问题。我想停止这个线程。
  • 你为什么要用这种方法摧毁你的播放器?如果另一个视图被呈现或推到顶部,而你又回到这个视图,你将不再有玩家。
【解决方案2】:

这可能会有所帮助..

    if (self.player.currentItem.playbackLikelyToKeepUp == 1 ) {

    NSLog(@"Ready To Play");
    [self.player play];


    }else{

    NSLog(@" Show HUD Buffering...");

    [self.player pause];

    }

【讨论】:

    猜你喜欢
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多