Как воспроизвести видео файл из библиотеки ресурсов с помощью AVPlayerLayer
Я пытаюсь играть alasset MOV файл из библиотеки активов. Кто-нибудь использует AVPlayerLayer? если да, то немного истории будет здорово...
2 ответа
NSURL *myMovieURL = [NSURL URLWithString:_vUrl.absoluteString];
AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:myMovieURL options:nil];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:avAsset];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:playerItem];
self.player = [[AVPlayer alloc]initWithPlayerItem:playerItem];
[_playerlayer addObserver:self forKeyPath:@"readyForDisplay" options:0 context:nil];
((AVPlayerLayer *)[self layer]).bounds = ((AVPlayerLayer *)[self layer]).bounds;
[(AVPlayerLayer *)[self layer] setPlayer:_player];
_playerlayer = (AVPlayerLayer *)[self layer];
[_player seekToTime:kCMTimeZero];
Вы не можете получить фактический путь к файлу из AssetsLibrary из-за песочницы. Тем не менее, у вас есть различные варианты для доступа / воспроизведения видеофайла.
1) Запросите URL-адрес актива с помощью метода URL-адреса ALAssetRepresentation и передайте его экземпляру MPMoviePlayerController для воспроизведения видео. Этот URL-адрес начинается с assets-library: // и не является URL-адресом файловой системы, но MPMoviePlayerController знает, как обрабатывать такой URL-адрес.
2) Получить содержимое видео с помощью getBytes:fromOffset:length:error: из ALAssetsRepresentation, чтобы сохранить видео в изолированной программной среде своего приложения, чтобы воспроизвести / отредактировать / поделиться им или использовать getBytes:fromOffset:length:error: для потоковой передачи содержимого видео,