[英]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.