在 WPF MediaElement 中显示视频的字幕

Posted

技术标签:

【中文标题】在 WPF MediaElement 中显示视频的字幕【英文标题】:displaying subtitles for a video in a WPF MediaElement 【发布时间】:2009-07-29 20:25:06 【问题描述】:

我正在开发一个 WPF 应用程序,该应用程序将视频剪辑显示为工作流程的一部分。我通过使用 MediaElement 播放本地托管(非流式传输)的 AVI 文件来做到这一点。效果很好。

但是,我刚刚收到了一项新要求,即允许在播放剪辑时显示字幕。我不知道解决这个问题的最佳方法。我隐约知道WMP能够在播放剪辑时显示单独的字幕文件,但我不知道WPF是否支持这一点?

我可以在 WPF 中本地执行此操作吗?如果没有,我有什么选择?

我的后备方法是要求客户端将字幕直接烘焙到视频文件中,但我更愿意找到更好的方法来处理这个问题。

【问题讨论】:

【参考方案1】:

好吧,如果您对字幕的要求只是覆盖 MediaElement 的文本,那么是的,WPF 肯定可以支持这一点。您只需要将 MediaElement 与 TextBlock 一起放入 Grid 中。

真正的技巧是根据 MediaElement 中的时间更改 TextBlock Text 属性。但是可能有很多方法可以做到这一点;首先想到的是使用绑定到MediaElement.Position 属性的触发器。

【讨论】:

我不想自己编写所有的计时和同步代码——我假设如果 WMP 已经处理了这个,那么 WPF 也可以。但也许不是。 不,WPF 没有对字幕的“自动”支持。不过,它的功能可以很容易地添加到 MediaElement 之上。查看此链接,例如:blogs.msdn.com/anilkumargupta/archive/2009/05/01/…【参考方案2】:

在 WPF 中需要解析字幕文件并进行同步,Silverlight 中没有 MarkerReached 之类的事件。但是您可以创建一个与您的视频具有相同文件名的 smi(SAMI 文件)并将其放在同一个文件夹中。然后订阅 ScriptCommand 事件并在覆盖文本块中显示内容。

【讨论】:

以上是关于在 WPF MediaElement 中显示视频的字幕的主要内容,如果未能解决你的问题,请参考以下文章

WPF中MediaElement的Source问题

WPF中的MediaElement从流中播放视频?

如何在视频控件上方添加透明控件,例如在 mediaelement 上的 wpf 标签

WPF 媒体播放器(MediaElement)使用实例(转)

WPF C# 媒体元素显示视频的第一张图片

使用WPF中MediaElement编写的播放器,在XP系统下加载视频很慢,是啥原因?