AVPlayer在应用程序进入后台时暂停和播放的问题

7
如果应用程序只是变得不活跃/活跃(当某些警报出现或双击主屏幕按钮时),则它可以正常工作。
AVPlayer *player;

- (void)applicationWillResignActive:(UIApplication *)application
{
    [player pause];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [player play];
}

如果应用程序转到后台(通过点击主屏幕按钮),然后回到前台,它不会从暂停位置继续播放,而是从不同的位置开始播放(有时从开头,有时从中间开始播放)。
2个回答

22

请按照以下步骤进行:

1)首先,在appDelegate.h文件中添加float *time

2)在applicationWillResignActive方法中获取当前时间

3)添加以下方法

ApplicationWillResignActive方法暂停播放器并保存播放器的当前时间

- (void)applicationWillResignActive:(UIApplication *)application
{
   [player pause];
   time = player.currentTime
}
applicationDidBecomeActive中添加seekToTime
- (void)applicationDidBecomeActive:(UIApplication *)application
{
  [player seekToTime:time toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
  [player play];
}

2
之前我也使用了相同的 seekToTime,但是它对我不起作用。苹果在寻找时进行了一些优化。因此,我们要使用 [_videoPlayer seekToTime:_pausedTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; 才能正常工作。 - Chandan Shetty SP

1

在应用程序进入后台之前,您应该调用这些方法。 [player pause]; 或者 [player stop];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接