2015-04-16 24 views
6

Poniższy kod w Xamarin dla iOS działa dobrze przed Xamarin dla aktualizacji iOS do v2.0.50727Odtwarzanie wideo z Xamarin dla iOS rozbitych po ostatniej aktualizacji

Jest to kod w niestandardowy mechanizm renderujący w Xamarin Aplikacja 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) 
    { 

    } 
} 

Jak powiedziałem, działało to do wczoraj, po czym zainstalowałem 2 aktualizacje na Xamarinie. iOS & to już nie działa. Wszystko, co widzę, to czarne płótno & wideo nigdy się nie wczytuje. Żadne powiadomienia z MPMoviePlayerController nigdy nie zostały podniesione. Jest wydanie tej aplikacji zaplanowane na następny tydzień & ten błąd ostatniej chwili powoduje mi bóle głowy. Każda pomoc jest na prawdę doceniana.

+0

Oto przykładowy kod, jeśli ktoś chciałby przetestować na własnej konfiguracji https://github.com/supreettare/moviePlayerDemo należy zmienić adres URL pliku wideo w WatchVideoRenderer w projekcie iOS. – Supreet

+0

Udało ci się to rozwiązać? – codinghands

+0

Tak, zostało to rozwiązane przy użyciu najnowszych bitów od Xamarin. Brak zmian w kodzie. – Supreet

Odpowiedz

0

Rozwiązałem podobny problem, naciskając nowy kontekst obrazu i to wystarczyło. Zmodyfikowałem kod tak, aby zawierał BeginImageContext() i 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();