AVPlayer не воспроизводит видео файл - PullRequest
6 голосов
/ 31 мая 2011

HI Я использую AVPlayer для медленного покадрового воспроизведения видео.Я использовал эту кодировку для этого.Я не смог воспроизвести видео.Пожалуйста, обратите внимание на мою проблему.

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 440)];
newView.backgroundColor = [UIColor yellowColor];

NSString *videoName = [fileNameArray objectAtIndex:indexPath.section];
NSString *url = [Utilities documentsPath:[NSString stringWithFormat:@"OSC/%@/%@.mov",videoName,videoName]];

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:url]];
//AVPlayer *avPlayer = [[AVPlayer playerWithURL:[NSURL URLWithString:url]] retain];
AVPlayer *avPlayer = [[AVPlayer playerWithPlayerItem:playerItem] retain];
AVPlayerLayer *avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain];

avPlayerLayer.frame = self.view.frame;
[newView.layer addSublayer:avPlayerLayer];
[self.view addSubview:newView];
[avPlayer play];

avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

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

Ответы [ 2 ]

11 голосов
/ 10 марта 2013

Поскольку вы используете локальный файл, лучше использовать [NSURL fileURLWithPath:url] для преобразования NSString в NSURL.Поэтому измените код на:

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:url]];
4 голосов
/ 03 июня 2011

Я не знаю о покадровой медлительности, но вы делаете несколько вещей, которые вам не нужны.В документации по iPhone ребята из Apple полностью запутались в управлении памятью, что делает его более сложным, чем нужно, поэтому я расскажу вам о ключевых моментах, которые заставляют его играть:

Во-первых, оставьте плеера не слой.Если вы не знаете почему, прочитайте книгу или руководство по просмотрам.(Который заполнен опечатками в стиле омонимов, но это проще, чем покупать толстую книгу).

2-й, вы не отлили слой и не использовали setPlayer :, точная строка находится в документации Apple.Вы должны конвертировать self.layer, используя typecast.

...