O áudio AAC é composto de quadros. Cada quadro contém vários tipos de elementos. O último elemento em cada quadro é o elemento END. A mensagem de erro recebida indica que o FFmpeg pesquisou o quadro, mas não encontrou o elemento END. Portanto, ele ignora esse quadro durante o remuxo e, eventualmente, interrompe a sincronização, se muitos deles ocorrerem. Então, aqui estão algumas tentativas de contornar isso.
# 1 Preservar registros de data e hora originais
ffmpeg -copyts -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4
# 2 Ignore os erros de stream e preserve os timestamps originais
ffmpeg -copyts -err_detect ignore_err -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4
# 3 Codifique o áudio do vídeo, mas preserve lacunas devido a quadros corrompidos
ffmpeg -i video.mp4 -i audio.wav -filter_complex "[0:a]aresample=async=1:min_comp=0.02[a]" -map 0:v -map "[a]" -map 1:a -c:v copy -c:a:0 aac -c:a:1 aac video-new.mp4