У меня есть приложение для iOS, которое воспроизводит фоновую звуковую дорожку с помощью одного AVPlayer и воспроизводит другие звуковые клипы «сверху» с помощью второго AVPlayer. (Звуковые клипы транслируются из Интернета, поэтому требуется наличие AVPlayer. )Проблема в том, что когда второй 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, чтобы звуки смешивались без сбоев?