WPF 怎么判断MediaElement视频播放完成

    WPF MediaElement控件中没有属性可以直接判断视频是否被播放完了,那要怎么判断视频是否播放完成呢?

    其实我们可以使用订阅MediaEnded事件,当视频播放完后,会触发该事件。

   MediaElement.MediaEnded Event:在媒体结束时发生。

    Namespace:
        System.Windows.Controls
    Assembly:
        PresentationFramework.dll

    下面我们来看示例:xaml中添加MediaElement控件,并赋予name值。

<Window x:Class="Software.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"        mc:Ignorable="d" x:Name="mainWin"  FontFamily="微软雅黑"WindowStartupLocation="CenterScreen" WindowStyle="None" Title="MainWindow" Height="1040" Width="1920" Loaded="mainWin_Loaded"><Grid>       <MediaElement Name="myMedia" LoadedBehavior ="Manual" UnloadedBehavior="Stop" Visibility="Hidden"/></Grid>
</Window>

    后台实现:m_IsVoicePlayEnd :控制是否要播放下一个视频文件,在播放开始的时候,m_IsVoicePlayEnd 设置为false,等待视频播放完成后,触发MediaEnded事件,在该事件中重新对MediaEnded赋值为true。然后继续播放下一个视频。

private bool VoicePlayBack(string voicePath)
{try{if (!string.IsNullOrEmpty(voicePath)){if (System.IO.File.Exists(voicePath)){m_IsVoicePlayEnd = false;Application.Current.Dispatcher.Invoke(() =>{this.myMedia.Stop();this.myMedia.Source = null;this.myMedia.Position = new TimeSpan(0, 0, 0);this.myMedia.Close();this.myMedia.Source = new Uri(voicePath, UriKind.Relative);this.myMedia.ScrubbingEnabled = true;this.myMedia.Volume = 100;this.myMedia.MediaEnded += MyMedia_MediaEnded;this.myMedia.Play();});}elsereturn false;}elsereturn false;return true;}catch(Exception ex){Console.WriteLine(ex);m_IsVoicePlayEnd = true;return false;}
}//订阅MediaEnded事件
private void MyMedia_MediaEnded(object sender, RoutedEventArgs e)
{try{this.myMedia.MediaEnded -= MyMedia_MediaEnded;}finally{m_IsVoicePlayEnd = true;}
}

    这里要注意个是因为多次订阅MediaEnded该事件,所以每一次视频播放完成后都要取消MediaEnded该事件的订阅,否则下次播放结束后,会多次触发MediaEnded该事件。

********************************************************************************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升网络安全重要要素IP地址

在数字化时代&#xff0c;网络安全已经成为人们关注的焦点。本文将深入探讨网络安全与IP地址之间的紧密联系&#xff0c;以及IP地址在构建数字世界的前沿堡垒中的关键作用。 网络安全是当今数字社会中不可忽视的挑战之一。而IP地址&#xff0c;作为互联网通信的基础协议&#…

数据结构 —— 手写排序算法

数据结构 —— 手写排序算法 一、堆排序二、快速排序 能手撸堆排序和快速排序&#xff0c;相信你在面试中已经能应付大部分排序问题了。 一、堆排序 建堆算法在面试中非常常见&#xff0c;我曾经就遇到过。因此为避免踩坑&#xff0c;特此开记录帖。堆必须是一棵完全二叉树&a…

Allegro如何进行四层板板层设计

Allegro如何进行四层板板层设计 板层设计说明 在进行多层板设计时我们画好PCB板框后&#xff0c;都要进行板层的设计。这里就以最简单的4层板为例为大家举例说明。 板层设置 点击“Setup”->“Cross Section Editor”如下图所示&#xff1a; 也可以直接点击工具栏进入…

java基于ssm框架的校园闲置物品交易平台论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园闲置物品交易平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

LeetCode-Z 字形变换(6)

题目描述&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从左往…

安防监控EasyCVR视频融合/汇聚平台大华热成像摄像机智能告警上报配置步骤

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

python实现圆圈烟花_附完整源码【第21篇—python过新年】

文章目录 前言效果图&#xff08;动态&#xff09;完整代码代码讲解总结寄语 前言 烟花是一种庆祝、欢庆或庆典活动中常见的美丽表现&#xff0c;它们以多彩的光芒和炫丽的形状为人们带来欢乐和惊喜。在这个项目中&#xff0c;我们将使用Python编程语言创建一个简单而有趣的程…

Pytest的测试报告——Allure

一、html-report测试报告 html-report测试报告。是pytest下基本的测试报告。要使用pytest-html测试报告&#xff0c;就要确保python版本在3.6及以上即可。本身pytest所提供的测试结果汇总&#xff0c;是基于控制台的文本输出形式。 pytest-html是基于HTML格式实现的测试报告的…

无心剑汉英双语诗《一亩三分地》

一亩三分地 My Small World 二十四年世事变幻 拨号上网曾争分夺秒 如今不限流量肆意冲浪 大数据&#xff0c;云计算&#xff0c;人工智能 洗刷着世间各行各业 周围人&#xff0c;生活不断升级 房子&#xff0c;车子&#xff0c;妻子…… 换了一茬又一茬 洋溢着自豪的表情 而我…

[NOIP2014 提高组] 生活大爆炸版石头剪刀布#洛谷

题目背景 NOIP2014 提高组 D1T1 题目描述 石头剪刀布是常见的猜拳游戏&#xff1a;石头胜剪刀&#xff0c;剪刀胜布&#xff0c;布胜石头。如果两个人出拳一样&#xff0c;则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统…

【Python_PyQtGraph 学习笔记(目录)】

【Python_PyQtGraph 学习笔记&#xff08;目录&#xff09;】 本专栏介绍如何使用 PyQtGraph 进行绘图操作&#xff0c;PyQtGraph 是基于 Qt 的纯 Python 库&#xff0c;如果使用 pyqt 进行图形界面开发&#xff0c;PyQtGraph 是很好的选择。 下面是专栏的目录汇总&#xff1a;…

无心剑七绝《未晚斋》

七绝未晚斋 倏忽半世莫伤怀 醉爱夕阳未晚斋 汉韵唐风情不尽 东华曼舞咏云台 2024年1月6日 新韵四开平韵 《未晚斋》这首诗&#xff0c;作者无心剑以其独特的笔触&#xff0c;描绘出了一幅宁静、淡雅的画面。诗中表达了对生活的热爱和对美好时光的珍惜。 首句“倏忽半世莫伤…

浏览器渲染原理(面试重点)

一、浏览器是如何渲染页面的 常见的简洁答案&#xff1a; 浏览器内核拿到内容后&#xff0c;渲染流程大致如下&#xff1a;解析HTML&#xff0c;构建Dom树&#xff1b;解析CSS&#xff0c;构建Render树&#xff1b;&#xff08;将CSS代码解析成树形的数据结构&#xff0c;与D…

使用nsight system 分析python进程

有时候我们的推理引擎是通过python脚本调用的&#xff0c;比如&#xff1a; python脚本调用TensorRT engine进行推理。 如果我们想用nsight system 分析性能&#xff0c;该怎么搞呢&#xff1f; 方法如下&#xff1a; 首先直接nsys profile 后面跟要执行的python命令就行 $…

一个vue3的tree组件

https://download.csdn.net/download/weixin_41012767/88709466

lldb in android studio

命令 n 单步s 进入函数, step intofini 函数返回, step outc 继续执行bt 显示调用栈, 标记*的行, 为当前帧(函数)frame info 显示栈当前所在的当前帧frame select [数字] 在当前栈中选择某个帧var 显示所有局部变量dis 显示汇编, 箭头位置为执行位置ni 汇编单步si 汇编进入函数…

c# vb.net检测字符串是否匹配一组相似度数组input Like

VB.NET 检测字符串是否符合一个数组中的多个like条件&#xff0c;有没有最简单的函数&#xff1f; 在VB.NET中&#xff0c;可以使用Enumerable.Any方法结合String.Like方法来检测一个字符串是否符合一个数组中的多个LIKE条件。Enumerable.Any方法用于确定序列中的任何元素是否…

java SSM社区文化服务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM社区文化服务管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系统主…

Mac环境下Parallels Desktop 19的安装和使用

为了后续构建漏洞靶场和渗透测试环境&#xff0c;我们需要提前准备好几套与宿主机隔离的工作环境&#xff08;Windows、Linux等&#xff09;&#xff0c;在Mac上最常用的就是Paralles Desktop&#xff08;PD&#xff09;工具了&#xff0c;当前最新版本为19。接下来介绍如何安装…

Http与Tcp协议的原理以及应用

OSI七层模型和相关协议 七层模型从上到下如下所示&#xff1a; 应用层&#xff1a;负责应用之间的通信&#xff0c;处理请求和响应的具体格式表示层&#xff1a;对于数据格式进行处理会话层&#xff1a;负责建立和断开通信连接&#xff0c;传输层&#xff1a;负责建立端口之间…