Я использую 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]);
}
}];
}