使用新的 MediaElement 在 .NET MAUI 应用中播放音频和视频
[删除(380066935@qq.com或微信通知)]
更好的阅读体验请查看原文:https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-communitytoolkit-mediaelement/
最受期待的 .NET MAUI 控件之一已发布;媒体元素。使用 MediaElement,您可以在 .NET MAUI 应用程序中轻松播放音频和视频,在这篇文章中,您将了解有关第一个版本以及我们对未来的计划的所有信息!
什么是MediaElement?
使用 MediaElement,您可以获得一个强大的控件,允许您在 .NET MAUI 应用内播放多媒体。
你可能已经从Xamarin社区工具包中知道MediaElement,它是由社区成员Peter Foot的出色工作添加的。虽然那个版本已经相当不错了,但它也有改进的余地,尤其是在Android上。
这就是为什么在将 MediaElement 移植到 .NET MAUI 时,我们从头开始重建了所有内容。通过这种方式,我们可以确保保留所有已经好的部分,同时改进可能需要一些爱的东西。
引擎盖下
对于Android,我们选择使用ExoPlayer
作为平台对应物,取代我们用于Xamarin的Android MediaPlayer。通过这种方式,我们会自动获得许多开箱即用的额外功能,例如播放 HTTP 实时流 (HLS) 视频、美观的平台传输控件以及许多其他功能。
在iOS和macOS上,我们使用AVPlayer
平台,就像我们在Xamarin的MediaElement上所做的那样。此外,Tizen 使用Tizen保持不变。多媒体。播放器
。
现在,.NET MAUI 建立在 WinUI 而不是 UWP 之上,我们在这里使用 WinUI 的全新 MediaPlayerElement
。虽然此控件对于 WinUI 来说也很年轻,但它已经非常完整并且看起来很有前途。
对不同媒体格式的支持因平台而异(可能还有您安装的编解码器),但通过使用平台本机媒体播放器,我们为每个操作系统利用了所有功能和相关优化性能。
开始
开始使用MediaElement很容易。首先,您要安装社区工具包。毛伊岛。媒体元素
NuGet 包。这是一个独立于主社区工具包包的软件包。
安装完成后,进入您的并将以下初始化行添加到:MauiProgram.cs
MauiAppBuilder
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
// Initialize the .NET MAUI Community Toolkit MediaElement by adding the below line of code
.UseMauiCommunityToolkitMediaElement()
// After initializing the .NET MAUI Community Toolkit, optionally add additional fonts, and other things
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
// Continue initializing your .NET MAUI App here
return builder.Build();
}
现在,您已准备好开始在您的应用程序中使用MediaElement!可以在下面找到 XAML 中的简单示例。
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="MediaElementDemos.GettingStarted"
Title="MediaElement Getting Started">
<toolkit:MediaElement x:Name="mediaElement"
ShouldAutoPlay="True"
ShouldShowPlaybackControls="True"
Source="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
HeightRequest="300"
WidthRequest="400"
... />
</ContentPage>
这会将 MediaElement 控件添加到加载视频时自动开始播放的页面,在 iOS 和 Windows 上运行此控件的结果如下所示。
在这篇博文中,我不会详细介绍第一个版本中已有的丰富功能,但有一件事需要指出。作为开发人员,您负责发布 MediaElement 资源。例如,应用可以在画中画模式下播放视频或在后台播放音频,在这些情况下,无法自动确定何时清理 MediaElement 资源。
这样做只需要一行代码。在下面的代码片段中,您可以看到当用户导航离开显示 MediaElement 控件的 时如何释放资源。ContentPage
public partial class FreeResourcesPage : ContentPage
{
void ContentPage_Unloaded(object? sender, EventArgs e)
{
// Stop and cleanup MediaElement when we navigate away
mediaElement.Handler?.DisconnectHandler();
}
}
要了解有关MediaElement当前所有功能的更多信息,请查看文档页面进行深入研究。