最新更新后,使用Xamarin for iOS播放视频中断 [英] Playing a video with Xamarin for iOS broken after latest update

查看:116
本文介绍了最新更新后,使用Xamarin for iOS播放视频中断的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在将Xamarin for iOS更新到v2.0.50727之前,适用于iOS的Xamarin中的以下代码可以正常工作

The following code in Xamarin for iOS was working fine prior to the Xamarin for iOS update to v2.0.50727

这是Xamarin Forms应用程序中自定义渲染器中的代码

This is the code in a custom renderer in a Xamarin Forms app

 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)
    {

    }
}

正如我所说的那样,它一直工作到昨天,之后我在Xamarin上安装了2个更新. iOS和现在失败了.我所看到的只是一块黑色帆布和视频永远不会加载. 从MPMoviePlayerController不会发出任何通知. 该应用程序计划于下周发布.最后一分钟的错误使我头疼.任何帮助,我们都感激不尽.

As i said this was working till day before yesterday, after which I installed 2 updates on Xamarin. iOS & this is now failing. All i see is a black canvas & the video never loads. No notifications from the MPMoviePlayerController are ever raised. There is a release of this app scheduled for next week & this last minute bug is causing me headaches. Any help is really appreciated.

推荐答案

尝试切换到AVPlayerViewController而不是MPMoviePlayerController.将此代码扔到您的OnElementChanged方法中.

Try switching to AVPlayerViewController instead of MPMoviePlayerController. Throw this code inside your OnElementChanged method.

我的渲染器是视图渲染器,而不是页面渲染器,因此您可能需要对其进行一些调整.

My renderer was a view renderer and not a page renderer so you might have to tweak it a bit.

if(Control == null)
{
    AVPlayerViewController avpvc;
    AVPlayer avp;

    var url = NSUrl.FromString("SOME URL HERE"); //or NSUrl.FromFile 
    avp = new AVPlayer(url);
    avpvc = new AVPlayerViewController();
    avpvc.Player = avp;
    avpvc.ShowsPlaybackControls = true;

    avp.Play();

    this.SetNativeControl(avpvc.View);
} 

这篇关于最新更新后,使用Xamarin for iOS播放视频中断的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆