Corrigir um vídeo m4v com áudio atrasado (áudio e vídeo fora de sincronia)

2

Aqui está uma pergunta semelhante para o Windows:

Ferramenta para corrigir vídeos fora de sincronia com áudio?

Espero resolver esse problema em um Mac.

Eu tentei o Handbrake e o Avidemux (este último parece ter uma opção - "shift" - para consertá-lo, mas ele não reproduz o áudio, então não posso dizer se ele está fazendo alguma coisa!) .

    
por dreeves 31.10.2012 / 02:00

1 resposta

5

Obtenha uma cópia do FFmpeg. Veja o final deste post sobre como fazer isso.

Não importa se o vídeo fica atrás do áudio ou vice-versa. O comando básico é o seguinte. Vamos passar a entrada duas vezes, como pode ser visto por duas opções -i , depois atrasar uma entrada e juntá-las novamente.

ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv

Aqui, offset é o atraso em segundos, por ex. 1.5 ou 0.35 . Este valor tem que ser positivo, por isso, se o seu áudio estiver atrasado em relação ao vídeo, teremos que compensar o vídeo. Isso é mostrado no exemplo acima. Da mesma forma, se o vídeo estiver atrasado em relação ao áudio, teremos que compensar o áudio.

Então, como você escolhe se atrasa o áudio ou o vídeo? Bem, como atrasamos todo o in.flv , selecionamos os fluxos de áudio ou vídeo e os mesclamos com os fluxos originais de áudio ou vídeo. Isso é feito nas opções -map .

Basicamente, map tem dois números. Aquele antes dos dois-pontos especifica o número do arquivo de entrada (iniciando em 0) e o segundo número especifica o fluxo do arquivo de entrada (também iniciando em 0).

Então, para atrasar o áudio, use as duas opções a seguir:

  • -map 1:0 significa: Pegue o primeiro fluxo do segundo arquivo de entrada (vídeo do arquivo original)
  • -map 0:1 significa: Pegue o segundo fluxo do primeiro arquivo de entrada (áudio do arquivo atrasado)

Alterne se precisar atrasar seu vídeo:

  • -map 0:0 significa: Pegue o primeiro fluxo do primeiro arquivo de entrada (vídeo do arquivo atrasado)
  • -map 1:1 significa: Pegue o segundo fluxo do segundo arquivo de entrada (áudio do arquivo original)

Finalmente, -c copy simplesmente informará ao FFmpeg para copiar os fluxos de bits de vídeo e áudio. Isso significa que não haverá processo de codificação. Isso torna o comando ultrarrápido e você não perderá nenhuma qualidade no processo. Se, no entanto, você encontrar erros de sincronização, deixe de fora -c copy e deixe o FFmpeg recodificar a entrada.

Você pode obter a última versão estável do FFmpeg por meio do Homebrew .

  • Abra um terminal e digite:

    ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
    
  • Consulte também os requisitos de instalação . Você tem que instalar as ferramentas de linha de comando para o Xcode se você não tiver. Você precisará de um ID da Apple para isso.

  • Assim que o Homebrew estiver instalado, instale o FFmpeg:

    brew install ffmpeg
    
  • Uma vez feito isso, podemos usar o FFmpeg para corrigir seu vídeo.

por 31.10.2012 / 08:38