所以我正在开发一个使用AVPlayer和AVPlayerLayer播放实时视频和音频流的应用 . 我希望当用户离开应用程序或锁定设备时允许音频在后台播放,到目前为止它工作得很好 .

我在AppDelegate.m中的代码基本如下:

-(void)applicationDidEnterBackground:(UIApplication *)application {
    [playerView setPlayer:nil];
}
-(void)applicationDidBecomeActive:(UIApplication *)application {
    [playerView setPlayer:streamPlayer];
}

其中playerView是我的AVPlayerLayer而streamPlayer是我的AVPlayer .

我遇到的问题是,当应用程序再次变为活动状态时,音频会跳过,并且流需要大约一秒钟才能稳定并再次正常播放 . 我想要实现的是音频在后台播放,然后当应用再次激活时,音频不会中断,视频再次变为活动状态并与音频同步 .

在applicationDidBecomeActive上,我尝试创建另一个连接到同一个流的AVPlayer实例,但音频静音,然后将该播放器设置为playerView的播放器,并且允许来自原始AVPlayer的音频不被中断,但是视频和音频不同步,因为它们来自不同的AVPlayers,所以这不起作用 .

有没有人有任何建议如何解决这个问题?