在Xamarin Platform中播放本地视频文件(TestMediaPlayer.Video.Demo_Video.mp4)时,我遇到了问题。
我已经在Xamarin Platform中创建了Cross Platform Test应用程序。我想从Windows或Android设备播放本地mp4文件。当我从网络URL播放示例视频时,效果很好。但是当我在本地文件系统上播放时崩溃或无法播放该文件。我已经为该视频文件设置了属性BuildAction = Embedded Resources。
如何在Xamarin平台上播放本地视频(mp4)文件
我的示例代码如下:
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));
}
}
}
答案 0 :(得分:0)
MediaManager提供媒体文件的本地播放,因此不直接支持基于程序集的嵌入式资源。
因此,当使用基于file://
的URL时,您需要提供一个指向本地操作系统文件系统的URL。
因此,如果您必须使用嵌入式资源(我个人会建议不使用),则需要将其从程序集复制到物理文件中。有许多SO问题/答案显示了如何完成,这里仅是一个:
否则,您将需要使用基于iOS捆绑软件的资源或基于Android Asset / Raw的资源。