Existem muitas opções para ffmpeg e outros softwares, tentei o método "concat" com ffmpeg e tentei mkvmerge, eles não funcionaram bem para vídeo JPEG (MJPG). Eu usaria qualquer ferramenta que mantivesse a qualidade, mas de preferência o ffmpeg.
Aqui estão as especificações dos vídeos (ambos são iguais):
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)
Métodos mais simples
O método mais simples para juntar vídeos MJPEG seria apenas usar a
cat
ferramenta ou o protocolo concat no formatoffmpeg
. Mas quase nunca sugiro isso, pois eles funcionam apenas para os formatos mais simples e há muitas maneiras desses métodos criarem saídas quebradas.Melhor método
O demuxer concat é "mais inteligente" que
cat
ou o protocolo concat, por isso é mais robusto e menos propenso a criar saídas quebradas.Crie um arquivo de texto chamado
input.txt
listando os vídeos que você deseja concatenar.Execute
ffmpeg
e dêinput.txt
como entrada:Isso pressupõe que suas entradas tenham os mesmos atributos: formato de vídeo, taxa de quadros, formato de pixel (YUV 4:2:0 vs YUV 4:2:2 vs YUV 4:4:4), largura, altura, formato de áudio, layout do canal, e taxa de amostragem.
O exemplo usa o modo de cópia de fluxo (
-c copy
) para evitar a recodificação e, portanto, preservar a qualidade.Veja FFmpeg Wiki: Concatenar para mais informações.
Assim:
E sim isso funciona.
Por que não? Esses comandos são bastante genéricos e funcionam para mim. Eu quase não uso mjpg e não encontrei problemas com Motion JPEG para ffmeg.
Alternativas