0

ハイ!

TTML タイプのクローズド キャプションをサポートするアプリケーションを作成したいと考えています。

ism/manifest ファイルに TTML ベースのクローズド キャプションが含まれています。どのように使用すればよいですか?

このサイト https://developers.google.com/cast/docs/playerを見つけました。 そこでは、次のように説明されています。

セグメント化された TTML と WebVTT

スムーズ ストリーミングにはセグメント化された TTML を使用し、HLS には WebVTT - Web ビデオ テキスト トラックを使用します。

有効にする:

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

しかし、私の問題の例が見つかりません。受信側でホストを作成した後、これを有効にする必要がありますか? このためのサンプルアプリはありますか?

更新 #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 に答える