Как воспроизвести локальный видеофайл (.mp4) в Xamarin Plateform (Windos, Android и IOS)

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

Я создал приложение Cross Platform Test на платформе Xamarin. Я хочу воспроизвести локальный файл 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));
        }
     }
}

Экран печати файла ресурсов Как воспроизвести локальный видеофайл (.mp4) в Xamarin Plateform (Windos, Android и IOS)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 632
1

Ответы 1

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

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

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

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

Привет, спасибо за ответ. Моя главная забота - воспроизвести локальный файл. Встроенный ресурс не является обязательным. Есть ли прямой способ разыграть местные ресурсы?

skt 26.09.2018 17:59

@skt Ресурсы на основе пакетов iOS, ресурсы на основе ресурсов Android / Raw, файл ресурсов пакета UWP (?) ...

SushiHangover 26.09.2018 18:02

изначально targate для пакета UWP, затем ресурсы на основе Android Asset / Raw

skt 26.09.2018 18:19
"что я бы лично не рекомендовал" - Хорошо, так что ... какая альтернатива?
BlueRaja - Danny Pflughoeft 21.01.2021 06:37

Другие вопросы по теме