Prefira o arquivo AAC para MP4, fazendo com que o áudio fique fora de sincronia

2

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:

  1. 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"
    
  2. 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"
    
  3. 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.

  • Alguém vê alguma coisa que eu fiz que poderia causar isso?
  • Uma ideia sobre o que mudar?
  • Talvez uma maneira de colocar um buffer entre os dois que forçaria a sincronização de volta?
  • Uma maneira melhor de fazer isso?
por Bill Bonar 11.12.2012 / 21:25

0 respostas