ffmpegの使い方が全くわかりません。4:33の長さのmkvファイルがあり、4:20から終わりの部分を切り取りたいです。
さまざまな方法を試しました:
1) 全く切れない
~ > ffmpeg -t 00:04:20 -acodec copy -vcodec copy -i output3.mkv output3-cut.mkv
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Jun 12 2012 16:27:34, gcc: 4.4.3
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4109 fps=3864 q=-1.0 Lsize= 36017kB time=272.48 bitrate=1082.8kbits/s
video:33503kB audio:2344kB global headers:0kB muxing overhead 0.477241%
2) 4m15s 4m05s 4m と指定すると 4:25 にカットされ、4m 以降の他の秒数も同じファイルサイズになります。3m50s または 30m と指定すると、秒数に関係なく 3:25 にカットされます。ある程度の価値s
~ > ffmpeg -t 4m20s -acodec copy -vcodec copy -i output3.mkv oFFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Jun 12 2012 16:27:34, gcc: 4.4.3
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4001 fps=3570 q=-1.0 Lsize= 35240kB time=266.71 bitrate=1082.4kbits/s
video:32781kB audio:2292kB global headers:0kB muxing overhead 0.475784%
utput3-cut.mkv
3) 一生懸命に長い時間をかけて、ちょうど 4:20 にカットしましたが、ファイル サイズが 35 MB から 113 MB に変更され、巨大なファイルが作成されました。
ffmpeg -i output3.mkv -ss 00:00:00 -t 00:04:20 -sameq output3-cut.mkv
mkv ファイルをカットする正しい方法は何ですか?
追伸
mencoderも試しましたが、オーディオトラックが破損しました
答え1
理論的にはこれで十分です:
ffmpeg -i output3.mkv -t 00:04:20 -c:v copy -c:a copy output-cut.mkv
読み方: MKV ビデオを入力し、4 分 20 秒をエンコードし、オーディオとビデオのビットストリームをコピーして、出力ファイルに保存します。
同期に問題がある場合は、オーディオとビデオを再エンコードしてみてください。
ffmpeg -i output3.mkv -t 00:04:20 -c:v libx264 -c:a libfaac output-cut.mkv
もちろん、 でビデオ品質を指定したり-crf 23
、 でオーディオ品質を指定したりして-b:a 192k
、パラメータを変えることもできます。FFmpegのブログ投稿詳細については。
コマンドのどこが間違っていたのかを以下に示します。
非常に古いバージョンの FFmpeg を使用しています。ソースからコンパイルするか、ホームページからコンパイル済みのバイナリをダウンロードしてください。これにより、バグが発生する可能性が低くなります。
-acodec copy -vcodec copy
来られない前にオプション-i
。これより前のものはFFmpegに入力ビデオを-i
デコードするように指示します。「コピーデコーダ」はありません。これは意味がありません。オプションの順序はここで重要です。-c:a copy
そして-c:v copy
後入力オプションと出力の前にあります。-t 4m20s
は間違った構文です。期間は秒数または 単位の数値である可能性がありますhh:mm:ss[.xxx]
。-t
どちらよりも先に来ることもできませ-i
ん。-ss 00:00:00
は無関係であり、FFmpeg に最初から開始するように指示するだけで、常に実行されます。