如何在 VBA 用户表单上显示 windows 媒体播放器隐藏式字幕

How to display windows media player closed captions on VBA userform

我已将 windows 媒体播放器控件作为活动 X 控件嵌入到 VBA 用户窗体中。我可以控制视频(开始、停止、暂停等),但无法显示隐藏字幕。

看起来我必须使用 smi / sami 文件,但是我无法让它工作...似乎缺少 MS 文档,更侧重于网页:-(

以下是intellisense提供的4个(必填?)元素,均为字符串:

me.WindowsMediaPlayer1.closedCaption.captioningId
me.WindowsMediaPlayer1.closedCaption.SAMIFileName = path & "cut.smi" ' Got this one
me.WindowsMediaPlayer1.closedCaption.SAMILang
me.WindowsMediaPlayer1.closedCaption.SAMIStyle

鉴于以下 SAMI 文件,我应该如何配置 WMP 才能显示隐藏式字幕?

<SAMI>

<HEAD>
<TITLE>SAMI Example</TITLE>

<SAMIParam>
  Media {cut.mp4}
  Metrics {time:ms;}
  Spec {MSFT:1.0;}
</SAMIParam>

<STYLE TYPE="text/css">
<!--
  P { font-family: Arial; font-weight: normal; color: white; background-color: black; text-align: center; }

  #Source {color: red; background-color: blue; font-family: Courier; font-size: 12pt; font-weight: normal; text-align: left; }

  .ENUSCC { name: English; lang: en-US ; SAMIType: CC ; }
  .FRFRCC { name: French;  lang: fr-FR ; SAMIType: CC ; }
-->
</STYLE>

</HEAD>

<BODY>

<!-- Open play menu, choose Captions and Subtiles, On if available -->
<!-- Open tools menu, Security, Show local captions when present -->

<SYNC Start=0>
  <P Class=ENUSCC ID=Source>The Speaker</P>
  <P Class=ENUSCC>SAMI 0000 text</P>

  <P Class=FRFRCC ID=Source>French The Speaker</P>
  <P Class=FRFRCC>French SAMI 0000 text</P>
</SYNC>

<SYNC Start=1000>
  <P Class=ENUSCC>SAMI 1000 text</P>
  <P Class=FRFRCC>French SAMI 1000 text</P>
</SYNC>

<SYNC Start=2000>
  <P Class=ENUSCC>SAMI 2000 text</P>
  <P Class=FRFRCC>French SAMI 2000 text</P>
</SYNC>

<SYNC Start=3000>
  <P Class=ENUSCC>SAMI 3000 text</P>
  <P Class=FRFRCC>French SAMI 3000 text</P>
</SYNC>

</BODY>
</SAMI>

非常感谢帮助,谢谢。

没有找到适合我的解决方案,但最终我进行了健全性检查。

在全屏模式下测试了WMP,仍然完全无法播放字幕文件;我应该在发布之前这样做。显然这与视频格式为 mp4 有关...

真正的健全性检查是切换到 VLC 并且字幕显示没有问题,所以不是 smi 文件的问题 - 但对我来说也不是解决方案。

如果您无意中发现了这个并且想要字幕,一个解决方案似乎是下载一组允许 WMP 显示字幕的特殊 [非 MS] 编解码器,但我没有尝试过这个,因为它也不是对我来说是一个可行的解决方案。

我无法理解 MS 是如何错过这个的 - 看起来很基本,很琐碎,但你已经知道了。