最简单的方法

最简单的方法

ffmpeg 和其他软件有很多选择,我尝试了 ffmpeg 的“concat”方法,并尝试了 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)

答案1

最简单的方法

合并 MJPEG 视频的最简单方法是使用工具catconcat 协议在 中ffmpeg。但我几乎从不建议使用这些方法,因为它们只适用于最简单的格式,而且这些方法有太多方式会创建损坏的输出。

最佳方法

连接解复用器比 concat 协议更“智能”,cat因此它更加健壮并且不太可能产生损坏的输出。

  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 vs YUV 4:2:2 vs YUV 4:4:4)、宽度、高度、音频格式、通道布局和采样率。

    • 该示例使用流复制模式(-c copy),这样就可以避免重新编码,从而保持质量。

    • FFmpeg Wiki:连接了解更多信息。

答案2

像这样:

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}

相关内容