WPF MediaElement
MediaElement是WPF中播放音频视频非常简单好用的控件。
支持多种格式的音频视频,播放事件也够用
1.创建方式
(1)XAML中创建
<MediaElement></MediaElement>
<MediaElement Name="My_MediaPlayer" LoadedBehavior="Manual"
Stretch="None" Width="0" Height="0"
Opacity="0" Visibility="Hidden"
MediaFailed ="My_MediaPlayer_MediaFailed"/>
(2)CS中创建
MediaElement mediaElement = new MediaElement();
mediaElement.LoadedBehavior = MediaState.Manual;
mediaElement.Stretch = System.Windows.Media.Stretch.None;
mediaElement.Opacity = 0;
mediaElement.Visibility = Visibility.Hidden;
mediaElement.MediaFailed += My_MediaPlayer_MediaFailed;
2.属性设置
和Button、Image一样,你可以在Xaml大部分位置创建并设置它的属性
LoadedBehavior:媒体的加载行为,是一个枚举值。
即当你给予MediaElement播放资源时,MediaElement默认的行为
枚举值 | 效果 |
---|---|
Manual | 预加载但不播放 |
Play | 直接播放 |
Pause | 暂停播放 |
Close | 释放媒体资源(包括内存) |
Stop | 停止(不会释放资源) |
Stretch:所呈现的媒体的拉伸值,枚举类型。主要用于视频播放。
默认为Uniform:在保留内容原有纵横比的同时调整内容的大小,以适合目标尺寸。
None:内容保持其原始大小。
Opacity:透明度 ,1为不透明 0为透明 0.5半透明
3.注册事件
MediaElement事件 | 触发条件 |
---|---|
MediaOpened | 当媒体被成功地打开时 |
MediaFailed | 当媒体未能被成功地打开时 |
MediaEnded | 当媒体播放到末尾时 |
CurrentStateChanged | 播放状态(CurrentState)发生改变时 |
DownloadProgressChanged | 下载进度(DownloadProgress)发生变化时 |
BufferingProgressChanged | 缓冲进度(BufferingProgress)发生变化时 |
事件可以在XAML中链接触发事件时执行的方法
Xaml中:
MediaFailed="MediaPlayer_MediaFailed"
对应的cs中:
private void MediaPlayer_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
//触发时你需要做什么
}
也可以在代码中手动注册事件
// 注册媒体播放器事件
My_MediaPlayer.MediaOpened += MediaElement_MediaOpened;
My_MediaPlayer.MediaEnded += MediaElement_MediaEnded;
4.设置播放资源
My_MediaPlayer.Source = new Uri("路径", UriKind.Absolute);
UriKind.Absolute : 该路径为绝对路径
UriKind.Relative:该路径为相对路径
UriKind.RelativeOrAbsolute:不确定
5.常用方法和属性
方法/属性 | 说明 |
---|---|
Source | 需要播放的媒体地址 |
AutoPlay | 是否自动播放媒体 |
CurrentState | 播放状态 |
Position | 媒体的位置(当前播放到哪里了) |
DroppedFramesPerSecond | 媒体每秒正在丢弃的帧数 |
NaturalDuration | 媒体文件的时长 |
Volume | 音量大小 |
IsMuted | 是否静音 |
Play() | 播放媒体 |
Pause() | 暂停媒体的播放 |
Stop() | 停止媒体的播放 |