如何使用AVPlayerLayer从资产库中播放视频文件

时间:2014-03-03 09:26:57

标签: iphone video alasset avplayerlayer

我试图从资产库中播放alaset MOV文件。有没有人使用AVPlayerLayer? 如果是的话,一些组织会很棒...

2 个答案:

答案 0 :(得分:1)

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];

答案 1 :(得分:-1)

由于沙盒,您无法从AssetsLibrary获取实际的文件路径。但是,您可以使用各种选项来访问/播放视频文件。

1)使用ALAssetRepresentation的url方法查询Asset的URL,并将其传递给MPMoviePlayerController的实例以播放视频。这个url以assets-library://开头,并不是文件系统url,但MPMoviePlayerController知道如何处理这样的URL。

2)使用getBytes获取视频内容:fromOffset:length:error:ALAssetsRepresentation将视频保存到您自己的应用程序沙箱中以播放/编辑/共享它或使用getBytes:fromOffset:length:error:to stream视频内容。