Как воспроизвести локальный видеофайл (.mp4) в Xamarin Plateform (Windos, Android и IOS) - PullRequest
0 голосов
/ 26 сентября 2018

Я столкнулся с проблемой при воспроизведении локального видеофайла (TestMediaPlayer.Video.Demo_Video.mp4) в платформе Xamarin.

Я создал кросс-платформенное тестовое приложение в Xamarin Platform.Я хотел бы воспроизвести локальный файл mp4 с устройства Windows или Android.Когда я воспроизводю образец видео с веб-адреса, которые работают нормально.Но когда я играю в локальной файловой системе, происходит сбой или не воспроизводится этот файл.Я уже установил свойство BuildAction = Embedded Resources для этого видеофайла.

Как воспроизводить файл локального видео (mp4) на платформе Xamarin

Мой пример кода, как показано ниже:

MainPage.xml

<?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:TestMediaPlayer"   
             xmlns:forms="clr-namespace:Plugin.MediaManager.Forms;assembly=Plugin.MediaManager.Forms"  
             x:Class="TestMediaPlayer.MainPage">

    <StackLayout> 
        <forms:VideoView x:Name="VideoPlayer" HeightRequest="404"  WidthRequest="404"  />         
    </StackLayout>

</ContentPage>

Код, стоящий за файлом MainPage.cs:

using Plugin.MediaManager;
using Plugin.MediaManager.Abstractions;
using Plugin.MediaManager.Abstractions.Enums;
using Plugin.MediaManager.Abstractions.Implementations;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace TestMediaPlayer
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            testVideo();

            // CrossMediaManager.Current.Play("https://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4", MediaFileType.Video); // Online resources

        }

        private   async void testVideo()
        { 
            string fileFullName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalizedResources), "TestMediaPlayer/Video/Demo_Video.mp4");

            await CrossMediaManager.Current.Play(new MediaFile("file://" + fileFullName, MediaFileType.Video, ResourceAvailability.Local));
        }
     }
}

Экран печати файла ресурсов enter image description here

1 Ответ

0 голосов
/ 26 сентября 2018

MediaManager обеспечивает собственное воспроизведение мультимедийных файлов, поэтому встроенные ресурсы на основе сборки напрямую не поддерживаются.

Поэтому при использовании URL-адреса на основе file:// необходимо указать URL-адрес файловой системы локальной ОС..

Итак, если вам нужно использовать встроенный ресурс (который я лично не рекомендую), вам необходимо скопировать его из сборки в физический файл.Есть множество вопросов / ответов SO, которые показывают, как это было сделано, вот один из них:

В противном случае вам нужно будет рассмотреть использование пакета iOSна основе ресурсов Android или ресурсов на основе Raw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...