WPF MediaElementでビデオの字幕を表示する
-
05-07-2019 - |
質問
私は、ワークフローの一部としてビデオクリップを表示するWPFアプリケーションに取り組んでいます。 MediaElementを使用してローカルでホストされた(ストリーミングされていない)AVIファイルを再生することでこれを行っています。すばらしい。
ただし、クリップの再生中に字幕を表示するための新しい要件が手渡されました。これについて最善の方法がわからない。クリップの再生中に、WMPには個別の字幕ファイルを表示する機能があることを漠然と認識していますが、WPFがこれをサポートしているかどうかわかりませんか?
これをWPFでネイティブに実行できますか?そうでない場合、私のオプションは何ですか?
フォールバックのアプローチは、クライアントに字幕を直接ビデオファイルに焼き付けることを要求することですが、これを処理するより良い方法を見つけたいと思います。
解決
まあ、字幕の要件が単にMediaElementをオーバーレイするテキストである場合、はい、WPFは確かにこれをサポートできます。 MediaElementをTextBlockとともにグリッドに配置するだけです。
実際のトリックは、MediaElementの時間に応じてTextBlock Textプロパティを変更することです。しかし、おそらくこれを行うには多くの方法があります。最初に思い浮かぶのは、 MediaElement.Position プロパティ。
他のヒント
WPFでは、字幕ファイルを解析して同期する必要があり、SilverlightではMarkerReachedのようなイベントはありません。ただし、ビデオと同じファイル名でsmi(SAMIファイル)を作成し、同じフォルダーに入れることができます。次に、ScriptCommandイベントをサブスクライブし、オーバーレイテキストブロックにコンテンツを表示します。