簡體   English   中英

Xamarin.Forms MediaManager 從本地存儲播放視頻

[英]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 文件夾中,並且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");
    }

在此處輸入圖片說明

更新

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM