1

我看到 MediaElement 上有一个 Markers 属性,但这似乎对 Silverlight MediaElement 可用,而不是 WPF MediaElement?

你能帮我解决我所缺少的吗?

我正在尝试将标记添加到 WPF MediaElement,以根据时间线播放视频并显示弹出窗口。我应该使用什么来代替 Missing Markers 集合?

谢谢您的帮助。

4

1 回答 1

4

根据您的实际意图,您的问题有两个方面 - 请注意MediaElement.Markers 属性与当前加载的媒体文件关联的时间线标记的只读 集合:

什么是时间线标记?

这是TimelineMarker 类的 MSDN 描述:

时间线标记是与媒体文件中的特定点相关联的元数据。这些标记通常提前创建并存储在媒体文件本身中。它们通常用于命名视频中的不同场景或提供脚本提示。通过处理 MediaElement 对象的 MarkerReached 事件或访问 MediaElement 对象的 Markers 属性,您可以使用时间线标记 [...]

因此,时间线标记可能非常适合编码弹出窗口,但重要的是要注意它们是媒体文件本身的属性,而不是典型媒体播放器时间线小部件上图形刻度线的集合!

如何创建和处理时间线标记?

我现在能找到的唯一一篇总结这一点的文章是Steven Porter 的How to encode video markers for consumption in Silverlight 和 WPF。(不要被注册需求所迷惑,正是来自邪恶连字符网站的臭名昭著的技术促成了 Stack Overflow 的创建,也就是说,您无需注册也可以很好地阅读文章,只需向下滚动即可。)

如何在 WPF 中创建带有刻度线的时间线控件?

假设这是您真正想要实现的目标以及您偶然发现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"/>
于 2010-09-17T09:37:39.810 回答