最新更新后,使用Xamarin for iOS播放视频中断 [英] Playing a video with Xamarin for iOS broken after latest update
问题描述
在将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屋!