0

AVFoundation を使用して、ムービー ファイルを読み込んで再生したいと考えています。最初の問題は、複数のローカル ファイルを読み込もうとすることです。私が見つけたコードでは、1 つしかロードできません。以下のメソッドを呼び出すと、例外が発生して終了します。

キャッチされない例外 '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 に答える