【发布时间】:2016-08-26 09:02:00
【问题描述】:
我有一个使用 AVPlayerViewController 播放本地视频的应用。 但是当视频播放完毕时,我希望它自动关闭(就像 MPMoviePlayerViewController 过去所做的那样)。
发布这个问题后,我设法解决了这个问题,部分归功于下面的答案,部分来自苹果的“指南和示例代码”。
这是对我有用的代码:
#import "ViewController.h"
@import AVFoundation;
@import AVKit;
@interface ViewController ()
@property(nonatomic, readonly) AVPlayerItem *currentItem;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)playerItemDidReachEnd:(NSNotification *) notification {
//remove the player
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)playVideo:(id)sender {
// grab a local URL to our video
NSURL *videoURL = [[NSBundle mainBundle]URLForResource:@"bagare" withExtension:@"mp4"];
// create an AVPlayer
AVPlayer *player = [AVPlayer playerWithURL:videoURL];
// create a player view controller
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init];
controller.player = player;
[player play];
[self presentViewController:controller animated:YES completion:nil];
// show the view controller
controller.view.frame = self.view.frame;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:_currentItem];
}
@end
【问题讨论】:
-
我的问题中的代码非常适合关闭一个视频,但是,当我添加更多视频并复制/粘贴代码时遇到了问题:第一个视频按我想要的方式关闭,但是当第二个视频播放完毕时,它会跳回到第一个视图控制器,而不是显示和播放视频的第二个 VC(它显示第二个 VC 一秒钟)。如果我按“完成”关闭视频,则不会发生这种情况。有人对此有解决方案吗?
标签: ios objective-c avplayer avplayerviewcontroller avkit