Как воспроизвести видео файл из библиотеки ресурсов с помощью 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: для потоковой передачи содержимого видео,

Другие вопросы по тегам