Переключение видео в AVPlayer создает вспышку при измененииIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Переключение видео в AVPlayer создает вспышку при изменении

Сообщение Anonymous »

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

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

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

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

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

Кто-нибудь знает, есть ли способ остановить этот flickr, либо через классы AVPlayer*, либо способ «подделать» его, сделав что-нибудь, чтобы сделать его невидимым.< /p>

Спасибо

Ниже приведен код моего метода загрузки и воспроизведения:
- (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]);
}
}];
}


Подробнее здесь: https://stackoverflow.com/questions/723 ... n-changing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»