MKVでビデオと複数の字幕ストリームをコピーし、複数の音声ストリームをAC3に再エンコードするにはどうすればffmpegを使用できますか?


1

MKV形式のビデオファイルがあります。私はビデオの品質が好きですが、FLAC形式のオーディオを使用するのは嫌いです。

これはデュアルオーディオファイルであり、日本語と英語のオーディオを含むアニメです。また、内部にいくつかの字幕ストリームもあります。

これは私が使用するコマンドです:

ffmpeg -i "01.mkv" -c:v copy -c:a ac3 -c:s copy "test.mkv"

ただし、最初の音声と最初の字幕文字列のみを取得します。複数のストリームのマップオプションに関するヘルプが必要です。


現在持っているコマンドの問題は何ですか?の-map 0:a? -map 0:s? -map 0:v前にが必要-c:vだと思いますが、それ以外は大丈夫です。
木梅

今のところ、最初のオーディオと最初の字幕文字列のみを取得します。マップオプションを使用してみます。私はそれについて読みましたが、私はそれを使用する方法を完全に理解できませんでした。それではこのように見えるでしょうか? ffmpeg -i "01.mkv" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "test.mkv"
ジェイソンマレー


はい、それを試してみてください。私はまだffmpegに不満を抱いていますが、mapコマンドを使用して、これらのものを出力に確実に引き渡す必要があることを伝えています。-map 0:a:1オーディオストリーム番号1のみをコピーするように指定しますが、-map 0:a?事実上ワイルドカードを使用してすべてをコピーする必要があります。
木梅

テストファイルをエンコードしただけで、完全に機能したようです!ありがとう!今、私はわからない部分を行うために、それはbashスクリプトを書くことです。しかし、それは別の質問です。再度、感謝します!
ジェイソンマレー

回答:


2

オーディオストリームと字幕ストリームのマッピングを指定し、それらすべてが最初ではなく確実にコピーされるようにする必要があると思います。そのためには、-map 0:a? -map 0:s? -map 0:v前に追加する必要があります-c:v

これでコマンドが作成されます

ffmpeg -i "01.mkv" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "test.mkv"

mapコマンドを使用して、これらのものを出力に確実に引き渡す必要があることを伝えます。-map 0:a:1オーディオストリーム番号1のみをコピーするように指定しますが、-map 0:a?事実上ワイルドカードを使用してすべてをコピーする必要があります。


1
フォームのマップ式は、-map x?xに一致するすべてのストリームを選択するようにffmpegに指示しますが、一致するストリームが見つからない場合はエラーをスローしません。-map x一致するすべてのストリームを選択するだけです。
ギャン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.