問題タブ [ttml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2527 参照

c# - 実行時にXslCompiledTransformに任意の名前空間を追加するにはどうすればよいですか?

Timed Text Markup Language(TTML)ドキュメントの非常に単純な変換を実行しようとしています。TTMLファイルの最小限の例を次に示します。

ドキュメントのデフォルトの名前空間に注意してください。それが私が抱えている問題の鍵です。

これが私が使用している変換です。これがすべてです、それは非常に簡単です。

私たちのデータセットには何百ものドキュメントがあり、それらすべてに同じデフォルトの名前空間があるわけではありません。ただし、上記のXSLTからわかるように、変換は単純であり、コアデータ要素に基づいている<p />ため、最終的に名前空間のバリエーションは重要ではありません。

XSLTファイルには明示的に定義された名前空間プレフィックス()があるため、上記のXSLは現在一部のソースファイルで機能しますtt。ただし、これは、デフォルトの名前空間が異なる別のソースファイルに遭遇した場合は機能しません。

したがって、既知のプレフィックスに対して任意の未知の名前空間値をXSLTに提供する方法を見つける必要があります。ソースドキュメントのデフォルトの名前空間を見つけるために使用できるコードがあります。

これは正しく私に与えますhttp://www.w3.org/2006/04/ttaf1。しかし、私はこの値をどうするか理解できないようです。XslCompiledTransform私は何時間もの間、インスタンスに変数の名前空間を提供しようとして検索し、実験してきました。トランスフォーム自体の領域内には、それを取得できるものは何もないようです。

XmlDocument名前テーブルを操作するために、XSLTファイルをに明示的にロードしようとしました(xmlns:tt="..."上記のXSLTで明示的な名前空間宣言を削除した後)。

これは実際の変換まで実行され、そこで私は次のようにXslLoadException述べますPrefix 'tt' is not defined.

私はこの時点で途方に暮れています。検索から見つけることができるすべてのことは、名前空間をXSLTドキュメントに入れることについて説明しています(私はすでに持っていて、1つの名前空間値に対して正常に機能します)。名前空間の定義をその場でトランスフォームに追加する方法を説明しているMSDNドキュメントやその他の場所には何も見つかりません。

誰かアイデアはありますか?

0 投票する
3 に答える
1715 参照

xml - AS3 を使用して、コロンを持つ XML ノード属性を解析します

次の XML ドキュメントがあります。

AS3 を使用してコンテンツをフラッシュ オブジェクトに正常にロードします。しかし、属性の値をどのように出力/トレースします<div xml:lang="it">か? コードを試すと:

コンパイラは、コロンによって示される構文エラーについて不平を言います。

0 投票する
1 に答える
1585 参照

c# - XDocument.Save() 各 XElement に不要な名前空間を追加します

次の XML があります。

でロードして、何も変更せずXDocument.Load()に保存すると、新しい XML ファイルは次のようになります。XDocument.Save()

何も変更せずにこの種の XML を読み込んで保存するエレガントな方法はありますか?

ありがとう!

0 投票する
3 に答える
550 参照

specifications - W3C TTML タイミング属性の説明

W3C TTML dfxp standardでは、div要素にbeginendおよびduration属性を含めることができます。

これらのタイミング属性の値を解釈する方法は?

例:

p要素をいつ提示するか?

TTML 仕様/実装へのポインターは役に立ちます。

0 投票する
2 に答える
1469 参照

google-cast - Smooth Streaming と PlayReady を備えた ChromeCast TTML クローズド キャプション

ハイ!

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

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

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

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

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

有効にする:

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

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

更新 #1

これが私のコードです:

うまくいきません。そこで、ストリームを取得することにしました:

そして、streamCount には 0 が含まれています。マニフェストにはクローズド キャプションが含まれています。getStreamCount() ではなく、別のものを使用する必要がありますか?

どうもありがとうございました!

0 投票する
2 に答える
650 参照

google-cast - Chromecast は TTML URL を Smooth Stream マニフェストに追加します

レシーバー アプリケーションで TTML キャプション URL を使用して SmoothStreaming chromecast プレーヤーを更新したいと考えています。私のマニフェスト ファイルには最初からこの URL が含まれていないため、次のように追加する必要があります。

プレーヤーが起動し、メタデータがメディア要素にロードされた直後にこれを行います(他の投稿で推奨されているように)が、

ビデオ用とオーディオ用の 2 つのストリームしか取得できません。そこにキャプションの兆候は見られません。また、ホスト オブジェクトのマニフェスト情報をオーバーライドしようとしました (これはライセンス URL に適しています)。

しかし、この関数は、enableCaptions 関数を呼び出すまで呼び出されません (3 番目の引数を追加した場合にのみ呼び出されます。その時点で、updateCationsRequestInfo 関数によって上書きされるため、3 番目の引数は不要です)。

キャプションリクエストがどこかで受け入れられたか拒否されたかを確認する方法と、これを処理する方法を知っている人はいますか? 再生中に字幕を変更できるので、 updateCationsRequestInfo() を使用しない方がよいでしょう。

問題は、URL が ttml リンクのように見えないことでしょうか (これはコンバーターを介して渡される別の形式です)。

お手伝いありがとう!

CORS に関する更新:

player.enableCaptions() を呼び出す直前に ttml-url をログに記録し、その URL をたどると、ttml ファイル (応答ヘッダー: Content-Type: text/xml およびいくつかの CORS 関連ヘッダー) を取得します。Google 開発ツールでは、player.enableCaptions() に関連するものは何も表示されません。エラーや成功メッセージはありません。したがって、CORSの問題には関係ありません。

0 投票する
2 に答える
311 参照

google-cast - ChromeCast パース セグメント化された TTML

ハイ!

Smooth Streaming と PlayReady を含む ism ファイルがあります。この ism には、セグメント化された ttml 形式のキャプションが含まれています。

しかし、この ttml には次のような改行文字があります: p8:br どうすればそれを解析し、これらの文字を /n (または Google ChromeCast が処理できるもの) に置き換えることができますか?

そのため、サブタイトルが 1 行ではなく 2 行で表示されます。

protocol.getStreamInfo(index) でストリーム情報を取得できることはわかっていますが、その後はどうすればよいですか?

更新 #1

他のプラットフォーム向けのアプリケーションを作成し、その方法は次のとおりでした。ttml 変数には、映画のキャプションが含まれています。

改行文字が「\n」に置き換えられた後、アプリケーションは時間に応じて現在のテキストを表示し始めました (たとえば、ムービーの下部にラベルがありました)。

更新 #2

dfxp のサンプルを次に示します。

サンプルの最後の行で、デバイスは文字を認識できず、次のようにサブタイトルを表示しました。

A cukornádföldön voltam.Akkor kapott el, mikor egyedül voltam.

それ以外の

cukornádföldön voltam です。

Akkor kapott el, mikor egyedül voltam.

そこで、ChromeCast API を使用して同様の操作を行いたいと思います。しかし、ChromeCast はタイミングを完全に処理できるため、単純に文字を変更する方が簡単です。

どうもありがとうございました!