共计 2973 个字符,预计需要花费 8 分钟才能阅读完成。
最受期待的 .NET MAUI 控件之一:MediaElement 现已公布。有了 MediaElement,您能够轻松地在 .NET MAUI 应用程序中播放音频和视频,在这篇文章中,您将理解到无关 MediaElement 第一个版本的所有信息以及咱们对将来的打算!MediaElement 是 .NET MAUI Community Toolkit 的一部分,这是一个社区创立的库,受到来自寰球社区和 Microsoft 的优良开发人员的反对。
什么是 MediaElement?
有了 MediaElement,您就有了弱小的控件,从而能够在 .NET MAUI 应用程序中播放多媒体。
得益于社区成员 Peter Foot 的杰出工作,您可能曾经从 Xamarin 社区工具包中理解到了 MediaElement。尽管那个版本曾经很不错了,但它还有改良的空间,尤其是在 Android 上。
这就是为什么在将 MediaElement 移植到 .NET MAUI 时,咱们从基层重建了所有内容。这样咱们就能够在保留所有曾经很好的局部的同时做一些改良。
▌底层逻辑
针对 Android,咱们抉择 ExoPlayer 用作平台对应物,替换咱们用于 Xamarin 的 Android MediaPlayer。通过这种形式,咱们主动取得了即用的额定性能,例如播放 HTTP 实时流式传输 (HLS) 视频、好看的平台传输控件以及许多其余性能。
针对 iOS 和 macOS,咱们应用 AVPlayer 平台,就像咱们在 Xamarin 的 MediaElement 上所做的那样。此外,Tizen 依然应用 .Tizen.Multimedia.Player。
当初 .NET MAUI 构建在 WinUI 的根底之上,而不是 UWP,咱们这里应用了全新的 WinUI MediaPlayerElement。尽管这个控件对于 WinUI 来说也很年老,但它曾经十分残缺并且很有前途。
对不同媒体格式的反对因平台而异(可能还会因你装置的编解码器而不同),但通过应用平台原生媒体播放器,咱们能够为每个操作系统无效利用所有性能和相干的优化性能。
入门
想要开始应用 MediaElement 很容易。首先,你要装置 CommunityToolkit.Maui.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 现阶段全副性能,请查看此文档页面进行深入研究 documentation page。
MediaElement 的将来
首先,我要非常感谢社区成员,他们不仅帮忙将此控件放入 .NET MAUI 社区工具包中,而且还帮忙咱们构建其余性能。如果您还没有拉取过这个控件,能够试试。
在这个初始版本中,咱们重视外围性能,也器重保障其可靠性。然而今后咱们能够开始增加各种便当用户的性能!
咱们常听到的一个用户心声是心愿利用能反对全屏视频播放。咱们听到了你们的心声!然而,很惋惜,要实现这点并不像外表看起来那么简略。在工具包存储库页面上有一个相干话题探讨 discussion,您能够随时发表本人的意见!
您还能够将性能诉求填在 feature request。我收到了包含心愿有播放列表、可能播放 DRM 多媒体、字幕反对以及容许自置自定义 HTTP 标头等诉求。能够看看您的诉求曾经蕴含在探讨意见中,如果没有,能够尽可能的认真形容并提交本人的诉求。
咱们期待看到更优化的由多媒体驱动的 .NET MAUI 利用我的项目!
点我返回官网博客,理解更多内容~