Ffmpegを使用してMP4コントラナーに字幕を埋め込もうとしています。
次のコマンドを使用しています。
ffmpeg -i input.MOV -i input.srt -map 0 -map 1 -c copy -c:s mov_text output.MOV
ビデオストリーマー(Wowza)との互換性のために、字幕をテキストではなくtx3gとしてエンコードしたいと思います。
字幕エンコーダーを変更するにする方法はありますか?
ありがとう!
FourCC tx3g
が実際に何を表しているのかわからなかったことを認めなければなりません。 FFmpegコーデックmov_text
とtx3g
は同じものです: MPEG-4 Part 17 (時限テキスト)。
FFmpegがサポートしていないのは、埋め込むテキストのカスタムスタイルだけです。ソースコードを見ると、それらが デフォルトのスタイルを適用する :であることがわかります。
今のところ、固定のデフォルトスタイルを使用します。スタイリングサポートを追加すると、これはASSスタイルから生成されます。
そうは言っても、無料のクロスプラットフォーム MP4Box は、要求に応じて、これらの字幕をMP4ファイルに追加できるはずです。スタイリングでも。それらをファイルに追加する方法は、そもそもそれらがどのようにエンコードされているかによって異なります。 そのドキュメントから :
テキストストリームの公式のテキスト表現はありません。さらに、仕様はほとんどの構造記述についてIsoMediaの知識に依存しています。テキストストリームのオーサリングを支援するために、時間指定テキストのTTXTと呼ばれるXML形式がGPACで開発されました。使用される拡張子は
.ttxt
です。
TTXTファイルを作成するには、次のようにします。
SRTまたはSUB字幕ファイルを見つけて、
MP4Box -ttxt file.srt
を実行します。これにより、字幕がTTXT形式に変換されます。
MP4Boxは、次のように既存のMP4ファイルに字幕ストリームを追加できるはずです。
MP4Box -add input.mp4 -add subtitles.ttxt output.mp4
事前に字幕ファイルをTTXTに変換することが重要です。それらがまだSUBまたはSRTでエンコードされている場合、MP4Boxはデフォルトオプションでそれらを単純にレイアウトします。
SRTまたはSUBファイルをインポートする場合、MP4Boxはデフォルトのレイアウトオプションを選択して、字幕がビデオの下部に表示されるようにします。
MacOSおよびiOS互換の字幕をMP4ビデオに埋め込む純粋なffmpegメソッドは次のとおりです。
ffmpeg -i input.MOV -i input.srt -c copy -c:s mov_text -tag:s:s:0 tx3g output.mov
-tag:s:s:0 tx3g
トリックを行います。