Видео коммутации в AVPlayer создает вспышку при изменении

Я использую AVPlayer AVFoundation для воспроизведения 2 видеоклипов, сделанных из 1 длинного видео (так что конец Из первых матчей начало второго)

Когда первые видео заканчиваются и пользовательские нажатия, я создаю новый AVPlayer и присваиваю его своему PlayerView и начать воспроизведение второго зажима.

Это все работает, однако, есть заметной экран «мерцание».

Мое предположение состоит в том, что это вызвано представлением проигрывателя, удаляя первый клип, а затем показывая второй клип.

То, что мне нужно, это для этого мерцания, чтобы не появиться, так что идет между двумя зажимами бесшовные.

Кто-нибудь знает, есть ли способ остановить этот Flickr, либо через классы AVPlayer * или путь к «поддельному» этому, делая что-то , чтобы сделать это, чтобы это не было видно.

Спасибо

Ниже приведен код моей нагрузки и способа воспроизведения:

- (void)loadAssetFromFile
{
    NSURL *fileURL = nil;

    switch (playingClip)
    {
        case 1:
            fileURL = [[NSBundle mainBundle] URLForResource:@"wh_3a" withExtension:@"mp4"];
        break;

        case 2:
            fileURL = [[NSBundle mainBundle] URLForResource:@"wh_3b" withExtension:@"mp4"];
        break;

        case 3:
            fileURL = [[NSBundle mainBundle] URLForResource:@"wh_3c" withExtension:@"mp4"];
        break;

        case 4:
            fileURL = [[NSBundle mainBundle] URLForResource:@"wh_3d" withExtension:@"mp4"];
        break;

        default:
            return;
        break;
    }

    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
    NSString *tracksKey = @"tracks";

    [asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
 ^{
     // The completion block goes here.
     NSError *error = nil;
     AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error];

     if (status == AVKeyValueStatusLoaded)
     {
         self.playerItem = [AVPlayerItem playerItemWithAsset:asset];

         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem];

         self.player = [AVPlayer playerWithPlayerItem:playerItem];
         [playerView setPlayer:player];

         [self.player seekToTime:kCMTimeZero];

         [self play];
     }
     else {
         // Deal with the error appropriately.
         NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);
     }
 }];
}
17
задан kdbdallas 30 August 2011 в 02:53
поделиться