tutorial ios xamarin mpmovieplayercontroller xamarin.forms

tutorial - Reproducción de un video con Xamarin para iOS roto después de la última actualización



xamarin ios tutorial (1)

El siguiente código en Xamarin para iOS funcionaba bien antes de la actualización de Xamarin para iOS a v2.0.50727

Este es el código en un renderizador personalizado en una aplicación Xamarin Forms

class WatchVideoRenderer : PageRenderer { MPMoviePlayerController moviePlayer; protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); var url = new NSUrl("http://192.168.12.4:8085/MediaUploads/1/211/520140731170618/DPM202.mp4"); moviePlayer = new MPMoviePlayerController(); moviePlayer.ContentUrl = url; moviePlayer.View.Frame = new CGRect((float)((NativeView.Bounds.Width - 600) / 2), (float)((NativeView.Bounds.Height - 450) / 2), 600, 400); MPMoviePlayerController.Notifications.ObserveLoadStateDidChange(OnLoadStateChanged); MPMoviePlayerController.Notifications.ObservePlaybackDidFinish(OnPlaybackComplete); View.AddSubview(moviePlayer.View); moviePlayer.PrepareToPlay(); moviePlayer.ShouldAutoplay = true; moviePlayer.Play(); } private void OnLoadStateChanged(object sender, NSNotificationEventArgs e) { if (moviePlayer.LoadState == MPMovieLoadState.Playable) { } } private void OnPlaybackComplete(object sender, MPMoviePlayerFinishedEventArgs e) { } }

Como dije, esto funcionaba hasta ayer, después de lo cual instalé 2 actualizaciones en Xamarin. iOS y esto ahora está fallando. Todo lo que veo es un lienzo negro y el video nunca se carga. No se han recibido notificaciones de MPMoviePlayerController. Hay un lanzamiento de esta aplicación programado para la próxima semana y este error de último minuto me está causando dolores de cabeza. Cualquier ayuda es muy apreciada.


Resolví un problema similar al presionar un nuevo contexto de imagen y eso fue lo que hizo. Modifiqué el código para incluir BeginImageContext () y EndImageContext ().

UIGraphics.BeginImageContext(new CGSize(1,1)); var url = new NSUrl("http://192.168.12.4:8085/MediaUploads/1/211/520140731170618/DPM202.mp4"); moviePlayer = new MPMoviePlayerController(); moviePlayer.ContentUrl = url; moviePlayer.View.Frame = new CGRect((float)((NativeView.Bounds.Width - 600) / 2), (float)((NativeView.Bounds.Height - 450) / 2), 600, 400); UIGraphics.EndImageContext();