我一直在尝试让隐藏式字幕与 SEF 播放器一起工作,但没有任何运气。我的应用程序使用 playready 流,我尝试侧加载 SAMI 文件,但出现错误。我更愿意进行侧面加载,但如果我可以让嵌入式隐藏式字幕工作,那将是第一步。三星开发者论坛上的文档和帖子似乎有限且相互矛盾,因此我希望找到能够在 2012/2013 设备上使用此功能的人。
这是我尝试过的:
var SefPlugin = document.getElementById('pluginDL');
alert(" " + SefPlugin.Open("Download", "1.000", ""));
alert(SefPlugin.Execute('GetPluginInfo'));
var ret = SefPlugin.Execute('StartDownFile', 'http://testurl.com/test.smi', '$TEMP/subtitle.smi', 10, 10);
alert("SUBTITLE DOWNLOAD RETURNED: " + ret);
输出是:
JS ALERT: 1
JS ALERT: 1
JS ALERT: SUBTITLE DOWNLOAD RETURNED: 1
然后在 OnStreamInfoReady 方法中我尝试这样做:
alert(" START SUBTITLE: " +Player.plugin.Execute("StartSubtitle", '$TEMP/subtitle.smi'));
alert("SET STREAM ID: " +Player.plugin.Execute("SetStreamID", 5, 0));
输出是:
JS ALERT: START SUBTITLE: -1
JS ALERT: SET STREAM ID: 1
返回 -1 的 StartSubtitle 是一个错误,我不确定这种情况有什么问题。
我还通过与上述相同的方式下载字幕文件来尝试 AVPlay 插件。然后,我尝试通过调用来启动播放操作:
var subtitleDataCallback = (function(syncTime, data) {
alert(syncTime + " : " + data);
})();
Main.AVPlayerObj.open('http://testurl.com/test.mp4',
{
subtitle: {
path: "subtitle.smi",
streamID : 0,
sync : 1000,
subtitleDataCallback: subtitleDataCallback
}
});
如果我省略了字幕对象,它会播放内容,但是当我有字幕对象时,它会给我以下错误:
JS ALERT: ======================================= ERROR2: TYPE_MISMATCH_ERR
我也为路径尝试了 $TEMP/subtitle.smi,但我收到了相同的不匹配错误。任何指导将不胜感激。