【问题标题】:Xamarin.Forms MediaManager play video from local storageXamarin.Forms MediaManager 从本地存储播放视频
【发布时间】:2020-01-13 20:39:38
【问题描述】:

我正在使用 MediaManager 创建自定义跨平台视频播放器。 它从 https 播放视频,但我希望它从本地存储播放视频。

        var folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        folder = Path.Combine(folder, "UserVideos/testvideo.mp4");
        videoPlayer.Source = folder;
        CrossMediaManager.Current.Play("file://" + "/UserVideos/testvideo.mp4");

 我尝试过这种方式,但它无法播放视频。 文件夹 UserVideos 位于主命名空间中。

【问题讨论】:

  • 不幸的是,我知道的所有 Xamarin 媒体插件都有错误,你必须自己实现它......
  • 也许你是对的......
  • 文档专门解决了这个问题 - github.com/Baseflow/…

标签: c# android ios xamarin.forms


【解决方案1】:

您能否确认文件testvideo.mp4 是存储在内部存储器还是外部存储器中?从您的代码中,我猜您想从内部存储中获取视频,但内部存储中的文件无法共享,并且您看不到它。

https://docs.microsoft.com/en-us/xamarin/android/platform/files/#internal-vs-external-storage

因此,当使用基于 file:// 的 URL 时,我建议您可以将视频复制到 Assets 文件夹,并且 BuildActionAndroidAsset

然后像这样播放视频:

CrossMediaManager.Current.Play("file:///android_asset/minions.mp4");

我通过 Nuget 包安装 Plugin.MediaManager.Forms,然后在 Mainactivity.cs 中初始化:

CrossMediaManager.Current.Init(this);

MainPage.xaml:

 <StackLayout>
        <video:VideoView HeightRequest="300" WidthRequest="200" />

        <Button Text="play local video" Clicked="BtnPlayLocal_Clicked"/>
    </StackLayout>



 private void BtnPlayLocal_Clicked(object sender, EventArgs e)
    {           
        CrossMediaManager.Current.Play("file:///android_asset/minions.mp4");
    }

更新

如果您想在 Xamarin.ios 中播放视频,请在 Resource 文件夹 中添加视频,并且 BuildActionBundleResource

然后像这样播放视频:

CrossMediaManager.Current.PlayFromResource("minions.mp4");

完整代码:

private  void BtnPlayLocal_Clicked(object sender, EventArgs e)
    {
        if (Device.RuntimePlatform == Device.iOS)
        {
            CrossMediaManager.Current.PlayFromResource("minions.mp4");
        }
        else if (Device.RuntimePlatform == Device.Android)
        {
            CrossMediaManager.Current.Play("file:///android_asset/minions.mp4");
        }

    }

这是 Github 中的示例:

https://github.com/CherryBu/VideoSample

【讨论】:

  • 如何在 iOS 中玩本地游戏?非常感谢您的回答
  • @Bogdan,请看我的更新,如果我的回复对你有帮助,请记得将我的回复标记为答案,谢谢。
  • GitHub 链接指向已删除的存储库。代码在其他地方是否仍然可用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多