web-dev-qa-db-ja.com

複数の字幕トラックを含むmkvファイルをffmpegを使用してハードコードされた字幕ストリームの1つを使用してmp4に変換するにはどうすればよいですか?

いくつかの字幕とオーディオトラックを含むmkvファイルを、ハードコードされた字幕トラックの1つとffmpegを使用して選択された単一のオーディオトラックを含むmp4に変換する方法を知りたいですか?元のmkvからトラックを抽出することなく、単一のコマンドにする必要があります(可能な場合)。

私がこれまでに試したこと:ffmpeg -i File.mkv -map 0:s:1 -map 0:v -map 0:a:1 -c:a aac -c:v copy output.mp4しかし、字幕はファイルにハードコードされておらず、可能であればmp4コンテナに多重化されています(ファイルはmp4拡張子で終わっているかもしれませんが、それでもmkvです)。

ffmpeg -i File.mkv
Input #0, matroska,webm, from 'File.mkv':
  Metadata:
    encoder         : libebml v1.2.1 + libmatroska v1.1.1
    creation_time   : 2018-08-11T22:02:55.000000Z
  Duration: 00:24:57.22, start: 0.000000, bitrate: 2271 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 640x480 [SAR 1:1 DAR 4:3], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Metadata:
      title           : A Day in Ichinoseki
    Stream #0:1(eng): Audio: aac (LC), 48000 Hz, 5.1, fltp (default)
    Metadata:
      title           : English
    Stream #0:2(jpn): Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      title           : Japanese
    Stream #0:3(eng): Subtitle: ass (default)
    Metadata:
      title           : English (Translation Only)
    Stream #0:4(eng): Subtitle: ass
    Metadata:
      title           : English
    Stream #0:5: Attachment: ttf
    Metadata:
      filename        : OpenSans-Semibold_0.ttf
      mimetype        : application/x-truetype-font
At least one output file must be specified

PS:ffmpegコマンドで逐語的に使用できるmkvストリームの簡単な要約を取得するために使用されるコマンドを知っていましたが、それを忘れていました。

1
Aspiring Dev

ソースとしてmkvを使用して字幕を埋め込むには、次のようにします。

ffmpeg -i video.mkv -vf subtitles=video.mkv:si=1 out.mp4

si=1のidを、ハードコーディングする字幕ストリーム番号に置き換えます。 ffprobeで確認できます。

1
konradmb