我有一个 iOS 应用程序,它使用一个 AVPlayer 播放背景音轨,并使用第二个 AVPlayer 在“顶部”播放其他声音片段。(声音片段是从 Internet 流式传输的,因此需要 AVPlayer。)问题是,当第二个 AVPlayer 开始播放时,它会导致背景 AVPlayer 停止几分之一秒,类似于此评论中描述的内容:
我正在用这种方法准备音频剪辑:
- (void)prepareAudio:(NSURL *)assetURL {
asset = [AVURLAsset URLAssetWithURL:assetURL options:nil];
playerItem = [AVPlayerItem playerItemWithAsset:asset];
[player replaceCurrentItemWithPlayerItem:playerItem];
[playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[player currentItem]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemFailedToReachEnd:)
name:AVPlayerItemFailedToPlayToEndTimeNotification
object:[player currentItem]];
}
...然后[player play];
在我想听到每个声音时调用。
当我设置音频会话或 AVPlayer 的每个实例时,我需要做些什么,以便声音混合而不会出现故障?