Eu tenho um aplicativo que lida com a normalização e combinação de arquivos de áudio e vídeo de várias fontes diferentes.
Todo o áudio recebido é normalizado da seguinte forma:
ffmpeg.exe -i "PathToIncommingAudioFile" -acodec aac -ac 2 -ar 44100 -ab 128k -strict experimental ""outputFile.aac"
Todo o vídeo recebido é normalizado da seguinte forma:
ffmpeg.exe -i "PathToIncommingAudioFile" -s 852x480 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -vf ""scale=iw*min(852/iw\,480 /ih):ih*min(852/iw\,480 /ih),pad=852:480 :(852-iw)/2:(480 -ih)/2"" -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "outputFile.mp4"
Cada um desses comandos (por favor, perdoe quaisquer práticas ruins, esta não é minha área de especialização) funciona para normalizar a mídia para que possa ser reproduzido em vários dispositivos.
Outro código nos permite mesclar áudio com áudio e vídeo ao vídeo. No entanto, quando tento mesclar os dois, o áudio fica fora de sincronia.
Aqui está o que estou fazendo:
Primeiro, o áudio é convertido em um arquivo de vídeo usando uma imagem PNG simples como um cartaz
ffmpeg.exe -loop 1 -shortest -i "image.png" -i "normalized.aac" -s 852x450 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "audioAsVideo.mp4"
Em seguida, os vídeos são tentados a serem mesclados da mesma forma que normalmente funciona. (Uma solução com ffmpeg não foi encontrada e é isso que atualmente funciona, na maioria dos casos)
mp4box.exe -cat "audioAsVideo.mp4" -cat "normalizedVideo.mp4" -new "CombinedVideo.mp4"
Próximo para lidar com alguns vídeos que têm apenas um canal de áudio (como webcams), o seguinte hack / correção foi adicionado. Ele roda em todos os vídeos para combinações de vídeo e geralmente funciona
ffmpeg.exe -i "CombinedVideo.mp4" -c copy -ac 1 "SingleChannelCombinedVideo.mp4"
Se esse processo for feito com um áudio e um vídeo, a sincronização de áudio do segundo arquivo será desativada. Se este é o áudio sobre o cartaz não é um grande negócio. Mas se é o vídeo, é muito perturbador.