0

Hy!ChromeCast TTML带平滑流式处理和PlayReady的隐藏式字幕

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

我的主机/清单文件包含基于TTML的隐藏式字幕,我想问如何使用它?

我发现这个网站, https://developers.google.com/cast/docs/player 他们描述如下:

分段TTML & WebVTT插入

使用分段的TTML的平滑流和WebVTT插入 - 为HLS网络视频文本轨道。

要启用:

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()?

非常感谢!

回答

1

正确的方法是听取metadataloaded事件。一旦这个事件被解雇,那么你很容易得到流数,但在事件被解雇之前不要这样做。然后,您可以为您想要的索引启用流(对于您想要的语言,如果有多个索引),然后启用标题。如果要更改语言,首先需要禁用标题,然后选择其他流索引,然后再次启用它。

+0

谢谢您的回复! 我更新了我的代码并实现了onMetadataLoaded事件,但此事件未被触发。你怎么看,可能是什么问题? 谢谢! –

+0

我可能会误解,但不是事件“loadedmetadata”的正确名称? –

+0

哦,你是对的,它被加载元数据,我纠正了代码,但事件仍然没有被解雇,我仍然没有得到它。 :( –

0

尚无样品。

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

+0

谢谢。 我用代码更新了我的问题。你怎么看,这是对的吗? –

+0

尝试收听“正在播放”的事件。届时,将有一个清单,所以它会知道一点关于流。 –