J'ai une application qui lit des vidéos locales en utilisant AVPlayerViewController. Mais lorsque la lecture de la vidéo est terminée, je souhaite qu'elle se ferme automatiquement (comme le faisait MPMoviePlayerViewController). Après avoir posté cette question, j'ai réussi à résoudre cela partiellement grâce aux réponses ci-dessous et en partie à partir de "Guides and Sample code" de Pommes.Comment rejeter l'AVPlayer automatiquement lorsque la lecture est terminée?
C'est le code qui a fonctionné pour moi:
#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
Le code de ma question fonctionne très bien avec une vidéo rejetant, Mais, je rencontré un problème quand j'ai ajouté plus de vidéos et copiez/collez le code: La première vidéo est rejetée comme je le veux, mais quand la deuxième vidéo a fini de jouer, elle revient au premier contrôleur de vue, au lieu du second VC où les vidéos sont affichées et jouées (il montre le second VC pendant une seconde). Cela ne se produit pas si je ferme les vidéos en appuyant sur "Terminé". Quelqu'un at-il une solution pour cela? –