Convertendo FLV para MP4 usando FFMPEG e preservando a qualidade

26

Estou tentando usar o ffmpeg para converter meus arquivos flv para mp4 para reproduzi-los em dispositivos iOS, mas o vídeo convertido tem uma qualidade muito pior do que o original.

Aqui está o comando que eu uso:

ffmpeg -i input.flv -ar 22050 output.mp4

Eu realmente apreciaria se alguém pudesse me fornecer as melhores configurações para conversão de flv para mp4.


fonte

Respostas:

42

Dependendo dos codecs usados ​​no seu FLV, você pode se dar ao luxo de envolvê-lo novamente em um contêiner mp4. Você vai precisar H.264ou MPEG4 simple profilevídeo e AACáudio. Você pode descobrir algumas informações no seu arquivo de origem comffmpeg -i input.flv

Não tenho certeza se simplesmente ter H.264 / MPEG4 Simple + AAC é bom o suficiente ou se há opções específicas para os codecs suportados. É fácil o suficiente para testar:

Tente usar

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsé copy timestampsque vai ajudar a sincronização de áudio.

Se isso não funcionar, tente forçar codecs de áudio e vídeo. Isso irá recodificar o arquivo:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

Para melhorar a qualidade do vídeo, você pode usar um valor menor de CRF, por exemplo, qualquer coisa abaixo de 18. Para obter um arquivo menor, use um CRF maior, mas observe que isso prejudicará a qualidade.

Para melhorar a qualidade do áudio, use um valor de qualidade mais alto. Para FAAC, 100é o padrão.


Aqui estão algumas reflexões sobre o comando ffmpeg sugerido na pergunta.

-arrefere-se à taxa de amostragem de áudio. Eu recomendaria não mexer com isso até entender melhor as coisas. Se você deseja reproduzir com codificação de áudio, ajuste a taxa de bits (por exemplo, -b:a 128k) e deixe o codificador escolher o que fazer com base nisso.

Se você acabar indo por esse caminho ...

A qualidade do CD é de amostragem de 44100Hz; vídeo típico usa 48000Hz.

Você pode observar que 22050 no exemplo da pergunta original é 1/2 da taxa de amostragem da qualidade do CD. se você estiver convertendo o material do CD com baixa conversão, é uma boa escolha. Se você está começando com uma fonte de 48KHz (que provavelmente é; novamente, isso é muito mais comum do que 44100 em arquivos de vídeo), eu usaria 24Khz. Provavelmente não vai importar muito, mas pode parecer um pouco melhor e usar um pouco menos de CPU para fazer a conversão.

Dan Pritts
fonte
relendo minha resposta ... Além da linha de comando que forneci acima, você pode copiar apenas vídeo ou apenas áudio e recodificar o outro. por exemplo ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" isso copiará o fluxo de vídeo e recodificará o áudio no AAC. O libfaac não tem ótima qualidade, mas funciona.
11118 Dan Pritts
Em relação ao comando que força os codecs de áudio / vídeo: Em setembro de 2019, eu descobri que o ffmpegsuporte foi interrompidolibaac . Esta pergunta sugere o uso ffmpegdo codificador AAC nativo via -c:a aac ou do codec Fraunhofer FDK AAC via -c:a libfdk_aac (que requer compilação ffmpegcom suporte para libfdk_aac).
aresnick 22/09