ffmpeg は .ass 字幕で使用する添付フォントをコピーします

ffmpeg は .ass 字幕で使用する添付フォントをコピーします

追加のフォントを必要とするビデオに mux したい .ass ファイルがあります。

添付ファイルをあるファイルから別のファイルにコピーするオプションはないようです。そのため、私はそれらすべてをダンプしました。

ffmpeg -dump_attachment:t "" -i input.mkv

しかし、どうすればそれらを新しいファイルに正しく取り込めるのでしょうか?

私は次のことを試しました:

ffmpeg -i input.mkv -c copy -attach "fontastique.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Franchise - Extra.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Italic.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Regular.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "SETFIRETOTHERAIN.TTF" -metadata:s: mimetype=application/x-truetype-font -attach "Volter__28Goldfish.ttf" -metadata:s: mimetype=application/x-truetype-font output.mkv

フォントは添付されているように見えますが、ビデオ/オーディオ/字幕を含むすべてのストリームは、フォントの設定された MIME タイプで表示されます。

Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp (default) (forced)
Metadata:
  MIMETYPE        : application/x-truetype-font
Stream #0:2: Subtitle: ssa (default) (forced)
Metadata:
  MIMETYPE        : application/x-truetype-font
Codec 0x18000 is not in the full list.
Stream #0:3: Attachment: unknown_codec
Metadata:
  filename        : fontastique.ttf
  mimetype        : application/x-truetype-font
...etc...

字幕は、添付されたフォントではなく、プレーヤーのデフォルトフォントとして表示されるため、フォントを見つけることができません。

ドキュメント例は言う

ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv

しかし、-metadata:s:2が何を意味するのか分かりません。どのストリームに添付するかを指定するものだと思っていましたが、-metadata:s:22が字幕ストリームの場合、を使用すると失敗します。

Could not write header for output file #0 (incorrect codec parameters ?): Error number -22 occurred

.ass 字幕ストリームで使用するために、複数のフォントを MKV コンテナーに正しくコピーまたは添付するにはどうすればよいですか?

答え1

まず、実際に を使ってフォントをコピーすることができますffmpeg。 この-mapオプションはいくつかのデフォルトを上書きし、入力からすべてのストリームを選択します。 例:

ffmpeg -i infile.mkv -map 0 -c copy outfile.mkv

以下も参照FFmpeg マップドキュメント詳細については。

既存のビデオにフォントを添付する場合、-metadata:s:2オプションは確かにストリーム 2 を選択しますが、出力を見ると、mkvinfo添付ファイルは独自のストリームであることがわかります。それらは字幕ストリームに「添付」されていません。したがって、質問の例では、 が必要になります-metadata:s:3。追加の添付ファイルには、対応するストリーム指定子を使用する必要があります。

関連情報