gpt4 book ai didi

c# - Xamarin.Forms MediaManager 从本地存储播放视频

转载 作者:行者123 更新时间:2023-11-28 23:20:19 27 4
gpt4 key购买 nike

我正在使用 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 在主命名空间中。

最佳答案

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

https://learn.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);

主页.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");
}

enter image description here

更新

如果要在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

关于c# - Xamarin.Forms MediaManager 从本地存储播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59723841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com