Seus arquivos não serão unidos corretamente porque algo não corresponde.
Como muitos outros, tive problemas com a sincronização de som corretamente em vídeos mesclados. e embora o MP4Box funcione bem se os clipes tiverem especificações idênticas, em alguns casos eu seria atingido pela mensagem "Nenhuma trilha de destino adequada encontrada - criando uma nova"; nesse caso, o Totem (também conhecido como Vídeos) não reproduziria esse segmento no arquivo associado Após algumas tentativas e erros e pesquisas adicionais, desenvolvi o método a seguir para lidar com a junção de vídeos que até agora funcionavam sempre com qualidade aceitável (para mim).
Se os tamanhos dos quadros não corresponderem (erros de associação pertencentes às faixas de vídeo):
Normalize o vídeo sem interromper o áudio (-c: uma cópia) definindo restrições (divisíveis por 8 para máxima compatibilidade de codec) para segmentos incomparáveis
Comandos de exemplo
width=856
height=480
avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4
Se o áudio não corresponder (erros de associação pertencentes às faixas de áudio):
Normalizar áudio
Processe o áudio sem interromper o vídeo (cópia c: v) para que todos os clipes correspondam ao codec, à frequência e à taxa de bits desejados com c: a codec -ar frequência como -ar 48000 e e taxa de bits com b: a 128k para estéreo (64K por canal parece um bom alvo) ou o que corresponder.
Exemplo: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4
(observe que libmp3lame é um codec para áudio mp3) Você pode obter uma lista de codificadores suportados pelo avconv emitindo o comando avconv -codecs
ou restringir as coisas a um código específico, avconv -codecs|grep *codecname*
por exemploavconv -codecs|grep mp3
Agora que normalizamos os arquivos, podemos nos juntar a eles. Neste exemplo, juntarei os arquivos com o MP4Box. Se você não o possui, pode obtê-lo emitindo o comandosudo apt-get install gpac
Associe os arquivos ao comando MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4
(observe que não há gato antes do primeiro arquivo e cada arquivo adicional é precedido por -cat e o arquivo de destino é precedido por -out)
Se você usar o MP4Box (recomendado para o MP4) para participar, poderá achar que precisa processar todos os clipes com avconv, se as especificações parecem coincidir ou não, para evitar o erro "Nenhuma faixa de destino adequada encontrada - criando uma nova (tipo vide)"
Nota: Descobri que o Avidemux tem problemas com vídeos codificados usando arquivos H.264 / AVC (por totem) devido aos quadros B como referência. Isso parece resultar em áudio fora de sincronia ao ingressar, mesmo ao optar por copiar áudio e vídeo sem remux. Falha ao não escolher o modo de segurança e fora de sincronia ao usar o modo de segurança
Fontes:
/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player
/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv
https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
Nota: Até onde eu sei, outros formatos (contêineres) têm restrições semelhantes para combinar o tamanho do quadro e as taxas de áudio; portanto, isso também funcionará para avi se você tentar ingressar via cat ou mencoder depois de normalizar o vídeo e o áudio .
Opcional: Use o Handbrake para recodificar o arquivo unido para um tamanho menor, se desejado, com uma taxa de quadros variável e uma configuração de qualidade constante de 25 (configurações sugeridas - ajuste conforme necessário para suas expectativas de material e qualidade)