MKVファイルで字幕を追加および削除する方法


28

いくつかの字幕オプションがある良質のMKVファイルがあります。リストに追加の字幕ファイルを追加したい。OSXを使用しています。

オンラインで検索した結果、ビデオコンバーターを使用するようになり、基本的に映画を新しいファイルに再エンコードしました。それは私には本当にやり過ぎのようです。さらに、以前の字幕と、途中で画質が多少低下する場合があります。

回答:


41

字幕を削除する:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers

字幕を追加する:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt

字幕の抽出:

mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done

mkvmergeとmkvextractはでインストールできますbrew install mkvtoolnix


2
MKVMerge GUIはMac OS Xで既に利用可能ですが、それでもコンソールファンにとっては良い方法です。
ボラ

字幕を追加するための上記のコマンドは、ファイルを再生するときに字幕を「デフォルトで有効」に設定することに注意してください。(このフラグは、MKVMerge GUIを使用して確認できます。)これを回避するには、を使用します--default-track '0:0'
マティアスバイネンズ16

4

字幕を表示するには、2つの基本的な方法があります。ピクセルをビデオ自体にエンコードできます。これは「ハードサビング」と呼ばれます。ここでの利点は、ビデオプレーヤーのシンプルさであり、単なるビデオストリームです。欠点は、ビデオを再エンコードする必要があり、時間がかかり、忠実度がいくらか失われることです。より良い翻訳が得られれば、それはビデオのピクセルです。また、使用できる言語は1つだけです。

やや良いのは、ビデオストリームとは別の場所にテキストファイルを配置する「ソフトサブッシング」です。字幕ファイルにはさまざまな形式がありますが、それらの基本部分にはすべて、コアに「テキスト、開始時刻、削除時刻」があります。一部には、画面上の色や向きなどの追加機能があります。これの利点は、複数の言語(DVDのように、複数の言語が利用可能)を持つことができ、ファイル内のタイプミスなどを修正できることです。また、字幕が必要ない場合は、字幕をオフにしてください。

Softsubsは別々のファイルにすることができます-ほとんどのプレーヤーは、メインビデオと同じ名前(異なる拡張子)の字幕を自動的に探します。または、特定のコンテナファイル形式(MKVなど)で内部に埋め込むことができます。MKVファイルツールについては、MKVtoolnix(Macポートがあります)をご覧ください。これにより、再エンコードせずにソフトサブを埋め込むことができます。

すべてのプレーヤーがすべての形式をサポートできるわけではないことに注意してください。私の経験では、XBMCにはSSAファイルに関する問題がありますが、はるかに単純なSRTファイルで十分です。VLCは、プラットフォームでサポートされている場合は何でも再生します。


1
ただし、一部のソフト字幕(特にDVD字幕)は、テキストベースではなくビットマップベースであることに注意してください。その主な効果は、それらを編集することをほとんど不可能にすることです
__-- evilsoup

@evilsoupありがとう、知らなかった。
リッチホモルカ

1
はい、IDX + SUB VOBsub。IDXはテキストファイルですが、SUBにはビットマップが含まれています。
カラン

直接ダウンロードページへのリンクを変更しました。
ボラ

0

これは古い質問でありuser495470、2013年の時点での回答は受け入れられていますが、質問の一部は字幕をファイルに追加することに関するものなので、この新しい追加を追加したいと考えました。

基本的に、私は何十もの.ass字幕を同様の名前のMKVファイルにマージする必要があったので、一度に1つのコマンドを実行するだけではカットされませんでした。そこで、実行元の現在のディレクトリで.assファイルを検索し、期待どおりにそれらをマージするこの単純なBashスクリプトを作成しました。

find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
  while read FILEPATH
  do
    DIRNAME=$(dirname "${FILEPATH}");
    BASENAME=$(basename "${FILEPATH}");
    FILENAME="${BASENAME%.*}";
    EXTENSION="${BASENAME##*.}"
    mkvmerge -o "/Users/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

もちろん、この単純なスクリプトは、字幕が英語であると想定し、それらをそのままマージしますが、使用のニーズごとに手動で調整できます。字幕とMKVを自動的にマージするという大きな問題は、このような簡単なスクリプトによって解決されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.