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

嘗試收聽「正在播放」的事件。屆時,將有一個清單,所以它會知道一點關於流。 –