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();