Mam aplikację na iOS, która odtwarza podkład dźwiękowy w tle z jednym odtwarzaczem AVPlayer i odtwarza inne klipy dźwiękowe "na wierzchu" za pomocą drugiego odtwarzacza AVPlayer. (Klipy dźwiękowe są przesyłane strumieniowo z Internetu, stąd wymagania dla AVPlayera.) Problem polega na tym, że kiedy drugi AVPlayer zaczyna grać, powoduje to zatrzymanie AVPlayer'a tła na ułamek sekundy, podobnie jak opisano w tym komentarzu:Zakłócenie dźwięku podczas jednoczesnego odtwarzania dwóch plików dźwiękowych AVPlayer
Play multiple Audio Files with AVPlayer
jestem przygotowanie klipów audio z tą metodą:
- (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]];
}
... a następnie powołując [player play];
kiedy wagowo mrówka, aby usłyszeć każdy dźwięk.
Czy jest coś, co muszę zrobić, gdy skonfigurować sesję audio lub każdą instancję AVPlayer, tak że dźwięki mieszają bez usterki?
To nie może być to. Zrobiłem kilka eksperymentów przy użyciu prostych nieskompresowanych plików PCM, a problem nadal istnieje. W związku z tym wydaje się, że ma to coś wspólnego z aplikacją AVMutableAudioMix. Ilekroć zostanie zastosowany, wtedy dzieje się bobble. –