FFMPEGはビデオフィルタを実行し、1つの字幕ストリームのみをコピーします。

FFMPEGはビデオフィルタを実行し、1つの字幕ストリームのみをコピーします。

.mkvビデオストリーム1つ、オーディオストリーム2つ、字幕トラック12があります。

グレースケールにしたいです。最初のオーディオトラックを使用し、英語字幕トラック6を使用します(ffmpeg -iこのタグに従ってストリーム0:11)。

ビデオをグレースケールに変換するフィルタを実行しています(ffmpegドキュメントから取得)。素晴らしい作品。デフォルトでは正しいオーディオストリームを選択するので大丈夫です。しかし、最初の字幕トラックも選択しているようです。私が望む字幕トラックではありません。

字幕に関するオンライントピックは、この操作を実行するためにすべてのストリームをマッピングする傾向があるか、字幕のインポートについて話す傾向があります。どちらも望ましくありませんが、すべての字幕トラックをマッピングしようとすると、フィルタリングとストリームコピーを一緒に使用できないというエラーが発生します。

私が実行するコマンドは次のとおりです。

$ ffmpeg -i color.mkv -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 \
    -c:a copy grey.mkv

c:sを使用してさまざまなバリエーションを試しましたが(字幕トラックを呼び出す正しい方法であるかどうかはわかりません)、結果はすでに持っているよりも悪い傾向があります(実行するようにしたとき)。欠けていて再生することもできません)。

ffmpeg文書を検索しましたが、この特定のインスタンスが存在しない場合や表示された場合は理解できません。

答え1

これを使用してください:

$ ffmpeg -i color.mkv -vf format=gray -map 0:v -map 0:a:0 -map 0:11 \
    -c:a copy -c:s copy grey.mkv

map含めるトラックのセットです。 withc指定子は、指定されたストリームに対してコピーするコーデック操作を設定します。

関連情報