在浏览器中将 SAMI 与 Windows 媒体播放器 控件配合使用
[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
可以使用基本脚本和Windows 媒体播放器控件对象模型在一个文件中声明不同的样式类,而不是为每个字体样式或语言创建 SAMI 文件。 可以创建自定义控件,使用户能够在不同的样式和语言选项之间进行选择。 此外,你可以完全控制 Player 界面的设计和每个函数的自定义。
有关在网页中嵌入 Windows 媒体播放器 控件的详细信息,请参阅网页中的简单脚本示例。
以下示例代码演示如何将隐藏式字幕与网页中嵌入的 Windows 媒体播放器 控件一起使用。 它包括允许用户选择字体样式和语言的控件。
<HTML>
<HEAD>
<SCRIPT>
// The following variable is used to prevent multiple initialization.
var initialized = false;
// The following function populates the select boxes.
// It is called the first time the media file is opened.
// Before then, the SAMI settings cannot be retrieved.
function initialize() {
var newOption;
for (var i = 0; i < Player.closedCaption.SAMILangCount; i++) {
newOption = document.createElement("OPTION");
newOption.text = Player.closedCaption.getSAMILangName(i);
newOption.value = newOption.text;
CCLang.options.add(newOption);
}
for (var i = 0; i < Player.closedCaption.SAMIStyleCount; i++) {
newOption = document.createElement("OPTION");
newOption.text = Player.closedCaption.getSAMIStyleName(i);
newOption.value = newOption.text;
CCStyle.options.add(newOption);
}
initialized = true;
}
</SCRIPT>
<!-- The following script code runs when the page is fully loaded. -->
<SCRIPT for="window" event="onload()">
Player.closedCaption.captioningID = "captions";
Player.closedCaption.SAMIFileName = "https://www.proseware.com/Media/seattle.smi";
// The digital media file will open automatically, after which
// the OpenStateChange event (handled below) will fire.
Player.URL = "https://www.proseware.com/Media/seattle.wmv";
</SCRIPT>
<!-- The following script code runs when a media file is opened. -->
<SCRIPT for="Player" event="OpenStateChange(NewState)">
// The first time this event fires, the Player stops and the
// initialize function is called. This allows the user to
// select a language and style before viewing the file.
if (13 == NewState && !initialized) {
Player.controls.stop();
initialize();
}
</SCRIPT>
</HEAD>
<BODY>
<OBJECT
ID="Player"
classID="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"
height="200"
width="250"
>
</OBJECT>
<TABLE height="100" width="250" border="3" bordercolor="blue">
<TR align="center">
<TD bgcolor="white">
<SELECT ID="CCLang" onClick="Player.closedCaption.SAMILang = value"></SELECT>
<SELECT ID="CCStyle" onClick="Player.closedCaption.SAMIStyle = value"></SELECT>
</TD>
</TR>
<TR height="75">
<TD bgcolor="blue">
<DIV id="captions"></DIV>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈