2

我一直在尝试让隐藏式字幕与 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,但我收到了相同的不匹配错误。任何指导将不胜感激。

4

1 回答 1

0

我从来没有真正让字幕文件与播放器一起工作。我找到了一个字幕解析器并将其从 ( http://mediaelementjs.com/ ) 中提取出来。它为您提供数组中的每个字幕条目,其中包含字幕应该开始显示和停止显示的时间。

于 2015-02-04T22:33:39.773 回答