我正在创建自定义的跨平台视频播放器与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位于主命名空间中。
发布于 2020-01-14 07:19:17
您是否确认文件testvideo.mp4是存储在内部存储还是外部存储?从您的代码中,我猜您希望从内部存储中获取视频,但是内部存储中的文件不能共享,而且您看不到它。
https://learn.microsoft.com/en-us/xamarin/android/platform/files/#internal-vs-external-storage
因此,当使用文件:// based时,我建议您可以在资产文件夹和BuildAction is AndroidAsset中复制您的视频。
然后播放这样的视频:
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");
}

更新
如果您想在BundleResource中播放视频,请在资源文件夹和BuildAction is 中添加视频
然后播放这样的视频:
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://stackoverflow.com/questions/59723841
复制相似问题