Я хочу использовать AVFoundation для загрузки и воспроизведения файлов фильмов. Первая проблема, с которой я столкнулся - это попытка загрузить несколько локальных файлов. Код, который я нашел, позволяет мне загрузить только один. Если я вызываю метод ниже, он выходит с исключением:
Завершение работы приложения из-за невыполненного исключения «NSRangeException», причина: «Невозможно удалить наблюдателя для ключевого пути« currentItem.nonForcedSubtitleDisplayEnabled », поскольку оно не зарегистрировано в качестве наблюдателя».
Спасибо за любой совет
- (IBAction)loadAssetFromFile:(NSString*)fileName withExtension:(NSString*)extension {</p>
<pre><code>NSURL *fileURL = [[NSBundle mainBundle]
URLForResource:fileName withExtension:extension];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
NSString *tracksKey = @"tracks";
[asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
^{
// Completion handler block.
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error];
if (status == AVKeyValueStatusLoaded) {
self.playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem addObserver:self forKeyPath:@"status" options:0 context:&ItemStatusContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:playerItem];
self.player = [AVPlayer playerWithPlayerItem:playerItem];
[playerView setPlayer:player];
}
else {
// Deal with the error appropriately.
NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);
}
}];
}