Ios 为活动注册AVPlayer-如何知道AVPlayer已播放完电影
我知道AVPlayerItem(AVPlayer的一个子类)能够订阅Ios 为活动注册AVPlayer-如何知道AVPlayer已播放完电影,ios,avplayer,Ios,Avplayer,我知道AVPlayerItem(AVPlayer的一个子类)能够订阅AvPlayerItemDidPlaytoEndTime通知 AVPlayer没有这样的功能,我需要使用AVPlayer,除非没有办法解决这个问题,并且知道(在我的例子中)什么时候播放完成 如何在AVPlayer中执行此操作?我阅读了这些类的一些文档,但没有立即找到答案 -(void)setupVideoView{ _videoPlayer = [AVPlayer playerWithURL:urlObjectHer
AvPlayerItemDidPlaytoEndTime通知
AVPlayer没有这样的功能,我需要使用AVPlayer,除非没有办法解决这个问题,并且知道(在我的例子中)什么时候播放完成
如何在AVPlayer中执行此操作?我阅读了这些类的一些文档,但没有立即找到答案
-(void)setupVideoView{
_videoPlayer = [AVPlayer playerWithURL:urlObjectHere];
AVPlayerLayer *layer = [AVPlayerLayer layer];
[layer setPlayer:_videoPlayer];
[layer setFrame:_videoView.bounds];
[_videoView.layer addSublayer:layer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:_videoPlayer];
}
-(void)itemDidFinishPlaying:(NSNotification *) notification {
// does not get called
DLog(@"");
}
正如我所知,没有办法通过AVPlayer层知道完整的时间 AVAsset-AVPlayerItem-AVPlayer是AvsFoundation中组合的三个组件。如果你想DIY更多的AVPlayer功能,你需要使用较低级别的AVPlayer,它们是AVAsset和AVPlayerItem 如果您只需要AVPlayer的正常实用程序,我想只需要使用AVKit中的AVPlayServiceWController
不建议使用MPMoviePlayer,因为它的大部分内容都已弃用。习惯AVPlayer…我可以通过以下方式解决这个问题:我使用了一个AVPlayerItem并从该项目创建了我的AVPlayer,将通知订阅到播放器项目
-(void)setupVideoView{
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:urlObjectHere];//edited
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem];//edited
_videoPlayer = [[AVPlayer alloc] initWithPlayerItem:playerItem];//edited
AVPlayerLayer *layer = [AVPlayerLayer layer];
[layer setPlayer:_videoPlayer];
[layer setFrame:_videoView.bounds];
[_videoView.layer addSublayer:layer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:_videoPlayer];
}
-(void)itemDidFinishPlaying:(NSNotification *) notification {
// gets called finally
AVPlayerItem *p = [notification object]; //bring video back to zero
[p seekToTime:kCMTimeZero];
DLog(@"");
}
我是不是应该放弃它,改用MPMoviePlayer?我明白了,谢谢你。我不知道MPMoviePlayer被弃用了。我想用AVPlayerItem。如何使其在UIView中播放并调用播放/暂停?再次感谢,我能够使用AVPlayerItem解决我的问题。没问题,我知道AVPlayer中完整时间的唯一方法是,通过NSNotificationCenter,播放和暂停是正确的,有两个实例方法[yourplayer play];和[你的球员暂停];你可以判断你的玩家。rate>0要知道它是否在玩,rate是玩家的游戏速度