web-dev-qa-db-ja.com

2つのJPEGビデオを結合する最も簡単な方法は何ですか?

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)
3
R S

最も簡単な方法

MJPEGビデオを結合する最も簡単な方法は、catffmpegツールまたは concat protocol を使用することです。ただし、これらは最も単純な形式でのみ機能し、壊れた出力を作成する方法が多すぎるため、これらを提案することはほとんどありません。

最良の方法

concat demuxercatまたはconcatプロトコルより「スマート」であるため、より堅牢で、壊れた出力を作成する可能性が低くなります。

  1. input.txtという名前のテキストファイルを作成して、連結する動画をリストします。

    file 'input1.mov'
    file 'input2.mov'
    
  2. 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 を参照してください。

3
llogan

このような:

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}
0
Rinzwind