0

我希望使用 AVFoundation 来加载和播放电影文件。我遇到的第一个问题是尝试加载多个本地文件。我发现的代码只允许我加载一个。如果我调用下面的方法,它会退出并出现异常:

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“无法从中删除关键路径“currentItem.nonForcedSubtitleDisplayEnabled”的观察者,因为它未注册为观察者。

感谢您的任何建议

- (IBAction)loadAssetFromFile:(NSString*)fileName withExtension:(NSString*)extension {

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]);
     }

 }];

}

4

1 回答 1

0

哎呀我自己想通了,看看我对这个问题的回答:MPMoviePlayerController 切换电影会导致白闪

于 2011-02-24T00:55:24.743 回答