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 视频的最简单方法是使用工具cat
或concat 协议在 中ffmpeg
。但我几乎从不建议使用这些方法,因为它们只适用于最简单的格式,而且这些方法有太多方式会创建损坏的输出。
最佳方法
这连接解复用器比 concat 协议更“智能”,cat
因此它更加健壮并且不太可能产生损坏的输出。
创建一个名为
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 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}