0
我正在为iOS和安卓系统提供观看视频的应用程序。我目前正在开发iOS实现,但每次我关闭持有AVPlayer或MPPlayer的viewcontroller时,应用程序都会抛出“System.InvalidOperationException:Sequence不包含匹配的元素”。我不知道为什么会发生这种情况。我分享了一些示例代码。Xamarin表单中的视频播放器抛出System.InvalidOperationException:Sequence包含无匹配元素
渲染
using AnimeViewer.iOS.CustomRenderers;
using AnimeViewer.Views.Partials;
using AVFoundation;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(VideoPlayer), typeof(VideoPlayerRenderer))]
namespace AnimeViewer.iOS.CustomRenderers
{
public class VideoPlayerRenderer : ViewRenderer<VideoPlayer, UIView>
{
public VideoPlayer VideoPlayer { get; set; }
protected override void OnElementChanged(ElementChangedEventArgs<VideoPlayer> e)
{
base.OnElementChanged(e);
if (e.NewElement == null) return;
VideoPlayer = e.NewElement;
SetNativeControl(new UIView {Frame = UIScreen.MainScreen.Bounds});
var player = new AVPlayer(new NSUrl(VideoPlayer.Source));
var playerLayer = new AVPlayerLayer
{
Player = player,
Frame = Control.Frame
};
Control.Layer.AddSublayer(playerLayer);
player.Play();
}
}
}
查看
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:partials="clr-namespace:AnimeViewer.Views.Partials;assembly=AnimeViewer"
x:Class="AnimeViewer.Views.VideoPlayerPage">
<partials:VideoPlayer x:Name="Player"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand" />
</ContentPage>
感谢代码,我之前也是这样做过,没有成功。但为了向你展示,我完全用你的代码完成了。 看看会发生什么 1.我可以点击情节点开视频 https://puu.sh/t1XcQ/302e2a11f7.png 2.我可以观看视频没有任何问题,它的完美! https://puu.sh/t1Xft/0d35f62409.png 3.点击左上角完成后,约3秒后弹出此错误 https://puu.sh/t1Xh6/e2362bccbd.png – Elertan
你确定你传递的路径是正确的吗?也许文件格式不正确? 你是从本地资源还是从uri打开视频? –
这可能是因为您在完成Tapped事件之前设置了SelectedItem而发生的,您是否尝试完全不了解它是否有效? –