¿Por qué este código Objective-C no reproducirá un video AVPlayerViewController?

introduzca la descripción de la imagen aquí Ambos están en viewDidLoad (). ¿Qué ocurre con este file fuente objective-c? La versión rápida funciona como un encanto … Xcode ver. 8.2 iOS 10

Swift (OK):

let path : String = Bundle.main.path(forResource: "charlie", ofType: "mp4")! let movieurl : URL = URL(fileURLWithPath: path) let movie : AVPlayerViewController = AVPlayerViewController() movie.view.frame = self.view.bounds let player : AVPlayer = AVPlayer(url: movieurl) movie.player = player self.view.addSubview(movie.view) player.play() 

Objective-C (No se mostrará / reproducirá el video):

  AVPlayerViewController* movie; AVPlayer* player; NSString *path = [[NSBundle mainBundle] pathForResource:@"charlie" ofType:@"mp4"]; NSURL *url = [NSURL URLWithString:path] ; movie = [[AVPlayerViewController alloc] init]; movie.view.frame = self.view.bounds; player = [[AVPlayer alloc] initWithURL:url]; [movie setPlayer:player]; [self.view addSubview:movie.view]; [player play]; 

 @import AVKit; @import AVFoundation; @property (nonatomic) AVPlayer *avPlayer; @property (nonatomic) AVPlayerViewController* avPlayerView; NSString *path = [[NSBundle mainBundle] pathForResource:@"Video1" ofType:@"mp4"]; NSURL *url = [[NSURL alloc] initFileURLWithPath: path]; AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset]; avPlayer = [AVPlayer playerWithPlayerItem:anItem]; [avPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; self.avPlayerView = [[AVPlayerViewController alloc] init]; self.avPlayerView.view.frame = self.view.bounds; [self.avPlayerView setPlayer:_avPlayer]; [self.view addSubview:_avPlayerView.view]; - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == avPlayer && [keyPath isEqualToString:@"status"]) { if (avPlayer.status == AVPlayerStatusFailed) { NSLog(@"AVPlayer Failed"); } else if (avPlayer.status == AVPlayerStatusReadyToPlay) { NSLog(@"AVPlayer Ready to Play"); } else if (avPlayer.status == AVPlayerItemStatusUnknown) { NSLog(@"AVPlayer Unknown"); } } } -(IBAction) BtnPlay:(id)sender { [avPlayer play]; } -(IBAction) BtnPause:(id)sender { [avPlayer pause]; } 

Prueba mi codigo Si algún problema con mi código pone comentario. Gracias. Codificación feliz

NSString * path = [[NSBundle mainBundle] pathForResource: @ "charlie" ofType: @ "mp4"];

Tratar

Usando [NSURL fileURLWithPath : ruta] en lugar de [NSURL URLWithString : ruta]

[NSURL fileURLWithPath]

O

[[NSBundle mainBundle] URLForResource: @ "charlie" conExtensión: @ "mp4"]