AVPlayer在视图中播放库视频

时间:2014-04-30 13:33:40

标签: ios video avplayer playback

我想在视图的框架中播放视频,但以下代码不起作用。 你能救我吗?

MPMediaItem *song = [allVideos objectAtIndex:indexPath.row];
NSLog(@"%@",[song valueForProperty:MPMediaItemPropertyAssetURL]);
NSURL *url = [song valueForProperty:MPMediaItemPropertyAssetURL];
AVPlayer *player = [[AVPlayer alloc] init];
AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:avAsset];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(playerItemDidReachEnd:)
                                             name:AVPlayerItemDidPlayToEndTimeNotification
                                           object:playerItem];
player = [[AVPlayer alloc]initWithPlayerItem:playerItem];

//[player seekToTime:kCMTimeZero];
[player play];

3 个答案:

答案 0 :(得分:1)

您需要使用AVPlayerLayer,添加此

AVPlayerLayer *playerLayer=[AVPlayerLayer playerLayerWithPlayer:player];
[self.view.layer addSublayer:playerLayer];

代码。

答案 1 :(得分:0)

您是否尝试使用MPMoviePlayerController,如下所示

    MPMoviePlayerController * _player = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];

    CGRect frame = self.frame;

    frame.origin = CGPointZero;

    _player.view.frame = frame;

    [self.view addSubview:_player.view];

    [_player prepareToPlay];

    [_player play];

答案 2 :(得分:0)

试试这个..

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
player.view.frame = CGRectMake(0,45, 1024, 723); // take your require frame size of player
[player.view setBackgroundColor:[UIColor clearColor]];
player.repeatMode=MPMovieRepeatModeNone;
[self.view addSubview:player.view];
[player play];