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而發生的,您是否嘗試完全不瞭解它是否有效? –