iOS 4.3.3 ve sonrasında bunun üzerinde çalışmıyor.AVPlayer replaceCurrentItemWithPlayerItem Ben AVPlayer kullanarak inşa ediyorum bir ses çalar var
Şu anda, etrafında player
örneğini tutmak ve ben (manuel seçimden veya parça sonuna ulaştı ya) parçaları takas gerektiğinde yeni bir AVPlayerItem
oluşturmak ve yeni öğe ile replaceCurrentItemWithPlayerItem
diyoruz.
Dokümanlara göre, replaceCurrentItemWithPlayerItem
senkronize olmayan bir işlemdir, bu nedenle oynatıcının currentItem anahtar yolunu da gözlemliyorum. Bu çağrıldığında, oyuncuma oynamasını söylerim. İşte
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerItemStatusChangedContext];
if (!_player) {
_player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
[_player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerStatusChangedContext];
[_player addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerCurrentItemChangedContext];
} else {
[_player replaceCurrentItemWithPlayerItem:playerItem];
}
Ve burada anahtar değeri gözlem geri arama geçerli:
benim anahtar gözlem yöntemi denir iOS 4.3.3 (ve iOS 5) Açık- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (context == CHStreamingAudioPlayer_PlayerCurrentItemChangedContext) {
NSLog(@"Player's current item changed! Change dictionary: %@", change);
if (_player.currentItem) {
[self play]; //<---- doesn't get called
}
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
ama _player.currentItem
her zaman nil
'dir. 4.2.1 ve 4.3.2'de, bu özellik gerçek değeri içerir. Bu yöntem bir daha asla çağrılmaz. Yani özünde, yerine koyma her zaman başarısız gibi görünüyor.
Bu bir böcek gibi görünüyor, ama belki de yanlış bir şey yapıyorum.
Dunja aşağıda cevap sorununuzu çözdü mü? –