Xamarin使用本地mp4格式化视频播放器

时间:2017-07-24 13:40:35

标签: android video xamarin.ios xamarin.forms

我在Xamarin Forms上制作一个带有视频播放器的页面,为Xamarin.Android播放本地mp4。

所以,我创造了一个" raw"我的Xamarin.Droid中的文件夹(在Resources文件夹中)并将我的视频与AndroidResource一起用于编译器。

我使用this插件来显示我的视频,因为我不想拥有控制器,我想循环播放视频。

但是,它说:不能播放视频。

我认为是因为它没有找到视频......

我不知道如何解决它。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

  

我必须将我的视频放在可绘制的,资产或原始的......?

您需要将视频置于原始状态,对于插件,我不打算在此建议任何第三方插件,您可以自行选择。我在这里使用Custom Renderer创建自定义视图以使用Android平台的官方控件VideoView播放本地视频。

例如:

在PCL中创建MyVideoView

public class MyVideoView : View
{
}

在Android项目中创建其渲染器:

[assembly: ExportRenderer(typeof(MyVideoView), typeof(MyVideoViewRenderer))]

namespace NameSpace.Droid
{
    public class MyVideoViewRenderer : ViewRenderer
    {
        private VideoView videoview;

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.View> e)
        {
            base.OnElementChanged(e);
            if (e?.NewElement == null || e.OldElement != null)
            {
                return;
            }

            if (Control == null)
            {
                videoview = new VideoView(Xamarin.Forms.Forms.Context);
                SetNativeControl(videoview);

                videoview.SetVideoPath("android.resource://" + Android.App.Application.Context.PackageName + "/" + Resource.Raw.one);
                videoview.Start();
            }
        }
    }
}

由于我直接在渲染器中提供VideoView的本地路径,因此您可以在xaml中使用此控件,如下所示:

<local:MyVideoView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />

因为它是官方VideoView,如果你想为它设置传输控制器,有很多样本显示如何与MediaController一起使用它。