Xamarin Forms: Как воспроизвести видео с помощью Plugin.MediaManager.Forms? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь воспроизвести видео, используя Plugin.MediaManager.Forms, и я имею в виду этот блог .

Шаг 1: Добавлено Plugin.MediaManager и Plugin.MediaManager.Forms.

Шаг 2: XAML-код - добавлен VideoView

<?xml version="1.0" encoding="utf-8" ?>  
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"  
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"  
             xmlns:local="clr-namespace:VideoPlayerApp"  
             x:Class="VideoPlayerApp.MainPage"  
             xmlns:forms="clr-namespace:Plugin.MediaManager.Forms;assembly=Plugin.MediaManager.Forms"  
             Title="Video Player">  

    <ContentPage.Content>  
        <StackLayout>  

            <Label Text="Xamarin Forms"  
                   FontSize="40"  
                   TextColor="Azure"/>  
            <Label Text="Video Player Application"  
                   FontSize="58"  
                   TextColor="BlueViolet"/>  
            <Button x:Name="PlayStopButtonText"  
                    Text="Play"   
                    Clicked="PlayStopButton"  
                    TextColor="BlueViolet"/>  
            <forms:VideoView HeightRequest="202"  
                             WidthRequest="202"/>  
        </StackLayout>  
    </ContentPage.Content>
</ContentPage>   

Шаг 3: xaml.cs code

public partial class MainPage : ContentPage
    {
        private string videoUrl = "https://sec.ch9.ms/ch9/e68c/690eebb1-797a-40ef-a841-c63dded4e68c/Cognitive-Services-Emotion_high.mp4";
        public MainPage()
        {
            InitializeComponent();
        }

        private void PlayStopButton(object sender, EventArgs e)
        {
            if (PlayStopButtonText.Text == "Play")
            {
                CrossMediaManager.Current.Play(videoUrl, MediaFileType.Video);

                PlayStopButtonText.Text = "Stop";
            }
            else if (PlayStopButtonText.Text == "Stop")
            {
                CrossMediaManager.Current.Stop();

                PlayStopButtonText.Text = "Play";
            }
        }
    }

Но на этом шаге выдается ошибка:

Ошибка CS0103 Имя MediaFileType не существует в текущем контексте

Шаг 4: Также добавлено VideoViewRenderer.Init(); в MainActivity.cs, AppDelegate.cs и MainPage.xaml.cs. Но появляется следующая ошибка для этой инициализации.

Имя 'VideoViewRenderer' не существует в текущем контексте

Я что-то упустил? Я проверил некоторые другие блоги, но произошла та же ошибка. Я добавил пример проекта здесь .

Снимок экрана параметров Android:

enter image description here

1 Ответ

1 голос
/ 30 сентября 2019

Блог кажется устаревшим. Часть API и методов были устаревшими. Вы должны проверить новейшие документы из https://github.com/martijn00/XamarinMediaManager#usage.

использовать следующий код вместо VideoViewRenderer.Init();

CrossMediaManager.Current.Init();

И просто нужно вызвать метод

CrossMediaManager.Current.Play(videoUrl);

И я проверил ваше демо. Вам необходимо обновить версию Xamarin.Forms до 4.2.x как в общем проекте, так и на определенных платформах (Android и iOS). Что будет соответствовать версии плагина.

Не забудьте установитьDex complier to d8 .

Щелкните правой кнопкой мыши свой проект Android -> Свойства -> Параметры Android.

enter image description here

...