私はこのスレッドを見つけました: 元の品質を維持しながらMKVをMP4に変換するHandbrake設定
そして、次のコードを使用して .MKV を .MP4 に「変換」できます。
for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na .mp4"
pause
唯一の問題は、オーディオ レーンが 2 つあることです。ドイツ語と英語です。上記のコードでは、ドイツ語 (1 番目) の言語のみがコピーされます。2 番目のオーディオ言語はコピーされません。どうすればいいでしょうか?
現時点では、ドイツ語のみで .MKV から .MP4 に変換しています。ただし、VLC プレーヤーで言語をドイツ語から英語に切り替えられるようにしたいと考えています。
ご協力いただきありがとうございます!
編集: ここでそのスレッドを見つけました: http://ffmpeg.gusari.org/viewtopic.php?f=25&t=611
そして、その情報を使ってテストしました。上記のコードを次のコードに変更しました。
for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -map 0:0 -map 0:1 -map 0:2 -c:v copy -c:a:0 copy -c:a:1 copy "%%~na.mp4"
pause
ここで何か間違ったことをしたのでしょうか? ドイツ語/英語の字幕を追加するにはどうすればよいでしょうか? そこに字幕マップを追加しても、.MKV に字幕がまったくない場合は、問題になりますか? サウンドトラック 2 つと字幕 2 つを含む .MKV を変換する .bat ファイルを作成したいだけです。そうすれば、すべての .MKV ファイルを、情報を一切失うことなく .MP4 に「再多重化」(または変換) できます。
現時点では、私の .MKV には字幕がないので、重要ではありません。しかし、将来に備えておいた方が良いですよね?
それで、私が正しくやったかどうか、また字幕を追加する方法も教えてください。FFmpeg を使うのは初めてです。ダウンロードしただけで、聞いたこともありませんでした。そのための CMD を実際に使用したことはありません。
答え1
ffmpegはすべてのトラックを自動的にマップしません。デフォルトストリームの選択出力にはオーディオトラック、ビデオトラック、字幕トラックが1つずつしかマッピングされません。地図すべてのストリーム-map 0
を選択するには、 を使用します。何マッピングするには、まず入力ファイルを解析し(ffmpeg -i input.mkv
)、スクリプトを使用して最終的な変換コマンドを作成する必要があります。ffprobeが役立ちます。FFmpeg Wiki: FFprobe のヒントたとえば。
指定できる-c copy
のはストリームコピーストリームの種類に関係なく、すべてのストリーム。ビデオ ストリームとオーディオ ストリームを個別にインデックスすることもできるため、コマンドは次のように短縮できます。
ffmpeg -i input.mkv -c copy -map 0 output.mp4
答え2
VCT と呼ばれるオープンソース プログラムがあります。 https://sourceforge.net/projects/videoconvertertranscoder/?source=directory
これはffmpegのGUIです。ffmpegコマンドを手動で編集することもできます。タブがあります。トランスコードMKV を MP4 に再パックできますが、このタブには字幕を追加するオプションがありません。
MKV を MP4 に再パックし、同時に字幕を追加する場合は、次の手順に従います。
- へ移動変換するタブをクリックして入力ファイルを選択します
- でビデオコンテナ選択するコピーそしてオーディオコーデック選択もコピー
- クリック字幕を追加外部SRTファイルを選択します
- ffmpegコマンドテキストボックスで字幕部分を置き換えます-c:s srt ""と-c:s 移動テキスト ""
- クリックバッチリストに追加クリックします始める エンコードは1〜2分で完了します。
もちろん、2 回のエンコードを気にせず、コマンドを入力するのが嫌な場合は、次のようにすることもできます。
- タブを選択トランスコードファイルをドラッグして入力ファイル..、 クリック始める1分以内に完了します。
- 次に、新しくエンコードされたMP4を選択し、ビデオコンテナ選択するコピーそしてオーディオコーデッククリックコピー。
- クリックバッチリストに追加クリックします始めるエンコードは1分以内に完了します。
答え3
さて、私は次のような .bat ファイルを使用しています:
for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na.mp4"
しかし、エラー メッセージは表示されますが、.MP4 は正常に動作します。ログ ファイルはこちらです: pastie.org/private/9lqyvhyotnh1o4gp6rg5g
問題は、古いソニーのテレビが .MP4 を見ているときに時々フリーズすることです。これがテレビの「プレーヤー」だけの問題なのか、変換されたファイル自体の問題なのかはわかりません。GUI は良さそうです。しかし、20 個のファイルを連続して変換する場合は、クリックする回数が多くなります。.bat ファイルは、すべてのファイルを 1 つのフォルダーに入れて自動的に変換します。
おそらく誰かが、なぜエラー メッセージが表示されるのか、このスクリプトが間違っているかどうかを知っているでしょう :)