![](/img/trans.png)
[英]Plugin.MediaManager.Forms: Video will not play from Xamarin.Forms App Data Directory
[英]Xamarin.Forms MediaManager play video from local storage
我正在使用 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://docs.microsoft.com/en-us/xamarin/android/platform/files/#internal-vs-external-storage
因此,当使用基于 file:// 的 URL 时,我建议您可以将视频复制到Assets 文件夹中,并且BuildAction是AndroidAsset 。
然后像这样播放视频:
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");
}
如果要在 Xamarin.ios 中播放视频,请在Resource 文件夹中添加视频, BuildAction为BundleResource
然后像这样播放视频:
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 中的示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.