MKVをAVIに変換するには、2つのことを行います。私が最初にやることはこれです:
ffmpeg -i filename.mkv -vcodec copy -acodec copy output.avi
またはこれ:
ffmpeg -i filename.mkv -sameq -acodec copy output.avi
これらはどちらもMKVをAVIに変換しますが、問題は何らかの理由でビデオがスムーズに再生されないことです。それでも問題ありません。もう1つやると、修正されます。
ffmpeg -i output.avi -vcodec mpeg4 -b 4000k -acodec mp2 -ab 320k converted.avi
これを行った後、ファイルは問題なく再生されます。この方法で1つのファイルを作成することに成功しましたが、別のファイルで試してみましたが、ビデオ品質に若干の損失が見られます。これは、2番目のステップを実行したときに得られる出力です。
FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
built on Dec 29 2010 18:02:10 with gcc 4.2.1 (Apple Inc. build 5664)
configuration:
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libswscale 0.11. 0 / 0.11. 0
Seems stream 0 codec frame rate differs from container frame rate: 359.00 (359/1) -> 29.92 (359/12)
Input #0, avi, from 'output.avi':
Metadata:
ISFT : Lavf52.64.2
Duration: 00:04:17.21, start: 0.000000, bitrate: 3074 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], 29.92 fps, 29.92 tbr, 29.92 tbn, 359 tbc
Stream #0.1: Audio: vorbis, 48000 Hz, stereo, s16
Output #0, avi, to 'converted.avi':
Metadata:
ISFT : Lavf52.64.2
Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], q=2-31, 4000 kb/s, 29.92 tbn, 29.92 tbc
Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 320 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
2番目のステップで任意の大きな設定を使用しただけで、以前はうまく機能しましたが、この場合はうまくいきませんでした。どの設定を使用する必要がありますか?
ビデオとオーディオのビットストリームをコピーするだけで、品質を損なうことはありません。
ffmpeg -i filename.mkv -c:v copy -c:a copy output.avi
FFmpegでビデオとオーディオを自動的に変換する場合:
ffmpeg -i filename.mkv output.avi
ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"
私の提案:aviコンテナーでmpeg4 + mp3を使用します。
Ffmulticonverterを使用してみてください。私にとって非常に便利です。これはffmpegの一種のGUIであり、すべてのパラメーターを簡単に設定できます。さらに、すべての可能なビデオ形式のリストを見つけることができます。
LP
ケンの答えに基づいて
再帰的
find . \( -name '*.mkv' \) -exec sh -c '
for file do
target="${file%.*}.avi"
ffmpeg -i "$file" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "$target"
done' sh {} +
すべてが正しいかどうかを確認してください
find . \( -name '*.mkv' \) -exec sh -c '
for file do
target="${file%.*}.avi"
echo ffmpeg -i "$file" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "$target"
done' sh {} +