Ответ 1
В приведенных выше документах указывается, что теперь продолжительность должна быть получена из экземпляра AVPlayerItem
, а не соответствующего AVAsset
. Чтобы получить продолжительность от текущего элемента игрока через наблюдение за ключом, я использую следующий метод (первоначально вытащенный из NGMoviePlayer
, который был написан для iOS 4.0):
- (void)loadPlayerWithItem:(AVPlayerItem *)playerItem {
self.player = [AVPlayer playerWithPlayerItem:playerItem];
...
// changed this from previous value currentItem.asset.duration
[self.player addObserver:self forKeyPath:@"currentItem.duration"
options:0
context:nil];
...
}
Я реализовал вышеупомянутое изменение в своем проигрывателе, и продолжительность работы сейчас! Это изменение в AVFoundation стало основной причиной проблемы. CMTimeFlags = 17 указывает kCMTimeFlags_Indefinite и kCMTimeFlags_Valid, а docs указывает:
В частности, продолжительность, сообщаемая ресурсом URL для потоковых медиа, обычно kCMTimeIndefinite, в то время как продолжительность соответствующего элемента AVPlayerIt может отличаться и может меняться во время воспроизведения.