レシーバー アプリケーションで TTML キャプション URL を使用して SmoothStreaming chromecast プレーヤーを更新したいと考えています。私のマニフェスト ファイルには最初からこの URL が含まれていないため、次のように追加する必要があります。
cast.player.enableCaptions(true, 'ttml', subtitleUrl);
プレーヤーが起動し、メタデータがメディア要素にロードされた直後にこれを行います(他の投稿で推奨されているように)が、
protocol.getStreamCount();
ビデオ用とオーディオ用の 2 つのストリームしか取得できません。そこにキャプションの兆候は見られません。また、ホスト オブジェクトのマニフェスト情報をオーバーライドしようとしました (これはライセンス URL に適しています)。
host.updateCaptionsRequestInfo = function (request){
requestInfo.url=subtitleUrl;
}
しかし、この関数は、enableCaptions 関数を呼び出すまで呼び出されません (3 番目の引数を追加した場合にのみ呼び出されます。その時点で、updateCationsRequestInfo 関数によって上書きされるため、3 番目の引数は不要です)。
キャプションリクエストがどこかで受け入れられたか拒否されたかを確認する方法と、これを処理する方法を知っている人はいますか? 再生中に字幕を変更できるので、 updateCationsRequestInfo() を使用しない方がよいでしょう。
問題は、URL が ttml リンクのように見えないことでしょうか (これはコンバーターを介して渡される別の形式です)。
お手伝いありがとう!
CORS に関する更新:
player.enableCaptions() を呼び出す直前に ttml-url をログに記録し、その URL をたどると、ttml ファイル (応答ヘッダー: Content-Type: text/xml およびいくつかの CORS 関連ヘッダー) を取得します。Google 開発ツールでは、player.enableCaptions() に関連するものは何も表示されません。エラーや成功メッセージはありません。したがって、CORSの問題には関係ありません。