MediaElement是用于视频和音频播放的控件。可以从以下来源播放基础平台支持的媒体:
使用 URI(HTTP 或 HTTPS)的网络。
使用 URI 方案嵌入在平台应用程序中的资源。embed://
源自使用 URI 方案的应用程序本地文件系统的文件。filesystem://
MediaElement可以使用平台播放控件,这些控件称为传输控件。但是,默认情况下它们处于禁用状态,可以由您自己的传输控制机制替换。以下屏幕截图显示了使用平台传输控件播放的视频:MediaElement
备注: MediaElement可在iOS,Android,Windows,macOS和Tizen上使用。
使用以下平台实现MediaElement
重要
如果您运行的是 Windows N 版本,则默认情况下不支持视频播放。Windows N 版本没有按设计安装视频播放格式。
配置
在开始使用该应用程序之前,必须安装 NuGet 包并在 MauiProgram.cs 文件中添加初始化行。有关如何执行此操作的详细信息,请参阅入门页面。MediaElement
追加 XAML 命名空间
在将工具集与 XAML 配合使用之前,必须将以下内容添加到页面或视图中:xmlns
在这方面:
将对其进行修改以包含元素,如下所示:
播放远程媒体
对象可以使用 HTTP 和 HTTPS URI 方案播放远程媒体文件。您可以通过将属性设置为媒体文件的 URI 来执行此操作:MediaElementSource
重要
从 HTTP 端点还原远程源时,您可能需要禁用阻止访问不安全的 Internet 端点的操作系统安全措施。这至少适用于iOS和Android。
默认情况下,打开媒体时,该属性定义的媒体不会立即开始播放。要启用自动媒体播放,请将该属性设置为 。SourceShouldAutoPlaytrue
平台提供的媒体播放控件默认处于启用状态,可以通过将属性设置为 来禁用这些控件。ShouldShowPlaybackControlsfalse
播放当地媒体
您可以从以下来源播放本地媒体:
使用 URI 方案嵌入在平台应用程序中的资源。embed://
源自使用 URI 方案的应用程序本地文件系统的文件。filesystem://
播放应用包中嵌入的媒体
对象可以使用 URI 方案播放嵌入在应用程序包中的媒体文件。媒体文件嵌入在应用程序包中,将它们放置在平台设计中。MediaElementembed://
若要启用媒体文件以便从本地资源播放,请将该文件添加到 .NET MAUI 项目文件夹。将文件添加到根目录时,URI 将为 。Resources/Rawembed://MyFile.mp4
您还可以将文件放在子文件夹中。如果元素将位于将与该元素一起使用的 URI 中,则它将是 。MyFile.mp4Resources/Raw/MyVideosMediaElementembed://MyVideos/MyFile.mp4
下面是在 XAML 中使用此语法的示例。
关于媒体源类型
对象可以通过将其属性设置为远程或本地媒体文件来播放媒体。该属性的类型为 ,此类定义了三个静态方法:MediaElementSourceSourceMediaSource
FromFile,返回 的实例。FileMediaSourcestring
FromUri,返回 的实例。UriMediaSourceUri
FromResource,返回 的实例。ResourceMediaSourcestring
此外,该类还具有返回参数实例的隐式运算符和 .MediaSourceMediaSourcestringUri
在 XAML 中设置属性时,将调用类型转换器以返回 or 类的实例。SourceMediaSourcestringUri
该类还具有以下派生类:MediaSource
FileMediaSource,用于从 .此类具有可设置为 .此外,此类具有隐式运算符,用于将对象转换为对象以及将对象转换为对象。stringPathstringstringFileMediaSourceFileMediaSourcestring
UriMediaSource,用于从 URI 指定远程媒体文件。此类具有可设置为 .UriUri
ResourceMediaSource,用于指定通过应用程序资源文件共享的嵌入文件。此类具有可设置为 .Pathstring
创建对象时,XAML 将调用类型转换器以返回 .FileMediaSourceFileMediaSourcestring
更改视频宽高比
该属性指定如何缩放视频媒体以适应显示区域。默认情况下,此属性设置为枚举成员,但您可以将其设置为枚举的任何 Aspect 成员:AspectAspectFit
AspectFit指示如有必要,视频将以纵横比适合显示区域。
AspectFill指示将裁剪视频剪辑以填充显示区域,同时保持纵横比。
Fill指示视频将被拉伸以填充显示区域。
确定状态MediaElement
该类定义一个名为 的只读绑定属性,其类型为 。此属性指示控件的当前状态,例如媒体是正在播放还是暂停,或者媒体是否尚未准备好进行媒体播放。MediaElementCurrentStateMediaElementState
枚举定义以下成员:MediaElementState
None指示对象不包含媒体。MediaElement
Opening指示正在验证项目并尝试加载指定的源。MediaElement
Buffering指示正在加载媒体以进行播放。其属性在此状态下不传递。 如果视频正在播放,它仍显示显示的最后一帧。MediaElementPositionMediaElement
Playing指示项目正在播放媒体源。MediaElement
Paused指示属性不递增。 如果视频正在播放,它仍显示当前帧。MediaElementPositionMediaElement
Stopped指示媒体包含,但未播放或暂停。其属性重置为 0,并且不会提前传递。MediaElementPosition
Failed指示无法加载或播放媒体。当您尝试加载新媒体项时尝试加载媒体项或媒体因崩溃而停止播放时,可能会发生这种情况。 使用该事件检索其他详细信息。MediaElementMediaFailed
通常,使用传输控件时无需检查属性。但是,在实现您自己的传输控制机制时,此属性变得很重要。CurrentStateMediaElement
实现自定义传输控件
媒体播放器传输控件包括执行播放、暂停和停止功能的按钮。这些按钮通常由熟悉的图标而不是文本标识,播放和暂停通常合并为一个按钮。
默认情况下,播放控件处于禁用状态。这允许您以编程方式或通过提供自己的传输控制机制来控制它。为此,请包括 和 方法。MediaElementMediaElementMediaElementPlayPauseStop
下面的 XAML 示例显示一个包含自定义传输控件和 :MediaElement
在此示例中,自定义传输控件定义为 Button 对象。但是,只有两个对象,第一个表示播放和暂停,第二个表示停止。DataTrigger 对象用于打开和关闭按钮,以及在播放和暂停之间切换第一个按钮。有关数据触发器的详细信息,请参阅 .NET MAUI 触发器。ButtonButtonButton
与代码相关的文件包含单击的事件处理程序:
打开时可以按下播放按钮开始播放。按下暂停按钮可暂停播放。按“停止”按钮可停止播放并返回媒体文件在开头的位置。
实现自定义音量控制
每个平台实现的媒体播放控件都包括音量栏。此栏类似于滑块,显示媒体的音量。此外,您可以操作音量条来增加或缩小音量。
您可以使用滑块实现自定义音量栏,如以下示例所示:
在此示例中,滑块数据将其属性绑定到 .这是可能的,因为该属性使用绑定。因此,更改属性将更改属性。ValueVolumeMediaElementVolumeTwoWayValueVolume
属性具有验证回调,该回调保证其值大于或等于 0.0 且小于或等于 1.0。Volume
有关使用滑块元素的详细信息,请参阅 .NET MAUI 滑块
MediaElement资产清理
为防止内存泄漏,请释放 。您可以通过断开处理程序的连接来执行此操作。 如果需要执行此操作取决于在应用中使用它的位置和方式,但通常,如果一个页面上有一个对象,并且不在后台播放媒体,则希望在用户离开页面时释放资源。MediaElementMediaElementMediaElement
下面是演示操作方法的示例代码摘录。首先,请务必将活动关联到主页。Unloaded
然后,在代码中,调用该方法以断开处理程序的连接。
若要了解有关维护过程的详细信息,请参阅处理程序的 .NET MAUI 文档。
性能
事件
方法
例子
可以在 .NET MAUI 社区工具包示例应用程序中找到此控件的示例。
应用程序接口
该命令的源代码可以在 .NET MAUI 社区工具包 GitHub 存储库中找到。MediaElement