我看到 MediaElement 上有一个 Markers 属性,但这似乎对 Silverlight MediaElement 可用,而不是 WPF MediaElement?
你能帮我解决我所缺少的吗?
我正在尝试将标记添加到 WPF MediaElement,以根据时间线播放视频并显示弹出窗口。我应该使用什么来代替 Missing Markers 集合?
谢谢您的帮助。
我看到 MediaElement 上有一个 Markers 属性,但这似乎对 Silverlight MediaElement 可用,而不是 WPF MediaElement?
你能帮我解决我所缺少的吗?
我正在尝试将标记添加到 WPF MediaElement,以根据时间线播放视频并显示弹出窗口。我应该使用什么来代替 Missing Markers 集合?
谢谢您的帮助。
根据您的实际意图,您的问题有两个方面 - 请注意MediaElement.Markers 属性是与当前加载的媒体文件关联的时间线标记的只读 集合:
这是TimelineMarker 类的 MSDN 描述:
时间线标记是与媒体文件中的特定点相关联的元数据。这些标记通常提前创建并存储在媒体文件本身中。它们通常用于命名视频中的不同场景或提供脚本提示。通过处理 MediaElement 对象的 MarkerReached 事件或访问 MediaElement 对象的 Markers 属性,您可以使用时间线标记 [...]
因此,时间线标记可能非常适合编码弹出窗口,但重要的是要注意它们是媒体文件本身的属性,而不是典型媒体播放器时间线小部件上图形刻度线的集合!
我现在能找到的唯一一篇总结这一点的文章是Steven Porter 的How to encode video markers for consumption in Silverlight 和 WPF。(不要被注册需求所迷惑,正是来自邪恶连字符网站的臭名昭著的技术促成了 Stack Overflow 的创建,也就是说,您无需注册也可以很好地阅读文章,只需向下滚动即可。)
假设这是您真正想要实现的目标以及您偶然发现MediaElement.Markers集合的原因,那么答案就是您自己的:
不过这很简单,基本上您需要根据自己的喜好自定义Slider 控件,请参阅Slider Class文档中的此示例,了解如何使用Ticks属性以不规则的间隔沿 Slider 创建刻度线:
<Slider Width="100" Value="50" Orientation="Horizontal" HorizontalAlignment="Left"
IsSnapToTickEnabled="True" Maximum="3" TickPlacement="BottomRight"
AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2"
Ticks="0, 1.1, 2.5, 3"/>