0

嗨!

我想创建一个支持 TTML 类型隐藏字幕的应用程序。

我的 ism/manifest 文件包含基于 TTML 的隐藏式字幕,请问我该如何使用它?

我找到了这个网站, https://developers.google.com/cast/docs/player ,他们在其中描述了以下内容:

分段 TTML 和 WebVTT

使用分段 TTML 进行平滑流式处理和 WebVTT - HLS 的 Web 视频文本轨道。

启用:

protocol_.enableStream(streamIndex, true); player_.enableCaptions(true);

但我找不到我的问题的例子。在接收方创建主机后是否必须启用此功能?是否有任何示例应用程序?

更新#1

这是我的代码:

  window.onload = function() {

  var mediaElement = document.getElementById('video'); //video is a html video tag

  var mediamanager = new cast.receiver.MediaManager(mediaElement);

  var url = "http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest";  //Just a sample URL

  var host = new cast.player.api.Host({ 'mediaElement': mediaElement, 'url': url });

  window.player = new cast.player.api.Player(host);

  protocol = cast.player.api.CreateSmoothStreamingProtocol(host);

  var initStart = 0;

  window.player.load(protocol, initStart);

  mediamanager.loadedmetadata = function(loadinfo) {
          //onMetadataLoaded fired, set the caption
  }


  }

它不起作用。所以我决定获取流:

  var streamCount = protocol.getStreamCount();

streamCount 包含 0。清单包含隐藏式字幕,我应该使用其他东西,而不是 getStreamCount()?

非常感谢!

4

2 回答 2

1

正确的方法是监听 metadataloaded 事件。一旦触发该事件,您就可以获取流计数,但在触发该事件之前不要这样做。然后,您可以为您想要的索引启用流(对于您想要的语言,以防您有多个),然后启用标题。如果要更改语言,首先需要禁用字幕,然后选择不同的流索引,然后再次启用它。

于 2014-03-06T17:52:05.130 回答
0

还没有样品。

是的 - 您应该在创建主机并开始播放后启用。

于 2014-03-06T12:17:41.383 回答