Ffmpegや他のソフトウェアには多くのオプションがあります。ffmpegで「連結」方法を試し、mkvmergeを試しましたが、JPEGビデオ(MJPG)ではうまく機能しませんでした。私は品質を維持するツールを使用しますが、ffmpegを使用することをお勧めします。
ビデオの仕様は次のとおりです(どちらも同じです)。
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.MOV':
Metadata:
major_brand : qt
minor_version : 537331972
compatible_brands: qt pana
Duration: 00:00:30.00, start: 0.000000, bitrate: 29166 kb/s
Stream #0:0(eng): Video: mjpeg (jpeg / 0x6765706A), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720, 28486 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc (default)
Metadata:
creation_time : 2019-04-02T14:53:42.000000Z
encoder : Photo - JPEG
Stream #0:1(eng): Audio: pcm_s16be (twos / 0x736F7774), 16000 Hz, mono, s16, 256 kb/s (default)
MJPEGビデオを結合する最も簡単な方法は、cat
のffmpeg
ツールまたは concat protocol を使用することです。ただし、これらは最も単純な形式でのみ機能し、壊れた出力を作成する方法が多すぎるため、これらを提案することはほとんどありません。
concat demuxer はcat
またはconcatプロトコルより「スマート」であるため、より堅牢で、壊れた出力を作成する可能性が低くなります。
input.txt
という名前のテキストファイルを作成して、連結する動画をリストします。
file 'input1.mov'
file 'input2.mov'
ffmpeg
を実行し、input.txt
を入力として指定します。
ffmpeg -f concat -i input.txt -c copy output.mov
これは、入力に同じ属性があることを前提としています:ビデオ形式、フレームレート、ピクセル形式(YUV 4:2:0対YUV 4:2:2対YUV 4:4:4)、幅、高さ、オーディオ形式、チャネルレイアウト、とサンプルレート。
この例では ストリームコピー モード(-c copy
)を使用しているため、再エンコードが回避され、品質が維持されます。
詳細は FFmpeg Wiki:Concatenate を参照してください。
このような:
ffmpeg -i {file1} -qscale:v 1 {file1}
ffmpeg -i {file2} -qscale:v 1 {file2}
ffmpeg -i concat:"{file1}|{file2}" -c copy {both}
ffmpeg -i {both} -qscale:v 2 {final}
そして、これはうまくいきます。
jPEGビデオ(MJPG)ではうまく機能しませんでした
何故なの?これらのコマンドはかなり汎用的で、私にとってはうまくいきます。私はmjpgをほとんど使用していません。ffmegのMotion JPEGに関する問題は見つかりませんでした。
代替案
mencoder -ovc copy -oac copy {file1} {file2} -o {result}