WPF中缺少MediaElement标记

时间:2010-03-09 18:37:04

标签: wpf mediaelement markers timelinemarkers

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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

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

什么是时间线标记?

以下是TimelineMarker Class

的MSDN说明
  

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

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

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

我现在能找到的唯一一篇总结我的文章是史蒂芬波特的How to encode video markers for consumption in Silverlight and WPF。 (不要被注册要求所迷惑,这是来自邪恶连字符网站的臭名昭着的技术,它首先激发了Stack Overflow的创建,即你可以在没有注册的情况下阅读文章,继续向下滚动。)

如何在WPF中创建带刻度标记的时间轴控件?

假设这是你实际想要实现的目标,以及为什么你偶然发现了MediaElement.Markers集合,答案是滚动你自己的

这很简单,基本上您需要根据自己的喜好自定义Slider control,请参阅如何使用Slider Class属性的Ticks文档中的此示例沿着滑块创建不规则间隔的刻度线

<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"/>