Como obter a melhor qualidade ao converter de mp4 para avi com ffmpeg?

11

Quando eu uso isso, a qualidade não parece ruim.

ffmpeg -same_quant -i video.mp4 video.avi

Na ffmpegdocumentação está escrito: "Observe que isso NÃO É A MESMA QUALIDADE. Não use essa opção, a menos que saiba que precisa."

Recebo -same_quanta melhor qualidade ou existe uma opção que ofereça a mesma qualidade da entrada e seja mais recomendada?

sid_com
fonte
Dependendo dos codecs usados ​​(alguns codecs são incompatíveis com alguns contêineres), você sempre pode simplesmente copiar os fluxos ( -codec copy). Essa é a melhor maneira de evitar alterações na qualidade, pois você não está reencodificando os fluxos, apenas reembalando os em um contêiner diferente.
njsg
Quando eu tento isso eu recebo: Unknown decoder 'copy'.
sid_com
3
Parece que -codec copydeve ir depois -i video.mp4 - você pode tentar ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantTrabalha aqui também, mas não fará nada, pois isso apenas copia os fluxos)
njsg
Sobre o posicionamento das opções de linha de comando do ffmpeg, consulte a documentação do ffmpeg - 2 Descrição : Aqui está um trecho: Como regra geral, as opções são aplicadas ao próximo arquivo especificado. Portanto, a ordem é importante, ...
Peter.O
Valeu! Agora com -codec copyno lugar certo é obras.
sid_com

Respostas:

14

(adaptado dos comentários acima)

Dependendo dos codecs usados ​​(alguns codecs são incompatíveis com alguns contêineres), você sempre pode simplesmente copiar os fluxos ( -codec copy). Essa é a melhor maneira de evitar alterações na qualidade, pois você não está reencodificando os fluxos, apenas reembalando os em um contêiner diferente.

Ao lidar com arquivos de áudio / vídeo, é importante ter em mente que os contêineres são principalmente independentes dos codecs usados. É comum ver pessoas se referindo a arquivos como "vídeo AVI" ou "vídeo MP4", mas esses são contêineres e nos dizem pouco sobre se um jogador poderá reproduzir os fluxos, além de limitações técnicas (por exemplo, AVI pode ter problemas com h264 e Ogg Vorbis ), você pode usar qualquer codec.

-same_quantparece ser uma maneira de dizer ao ffmpeg para tentar obter uma qualidade semelhante, mas assim que você recodifica o vídeo (pelo menos com codecs com perdas), você não tem como obter a mesma qualidade. Se você se preocupa com a qualidade, uma boa regra é evitar recodificar os fluxos sempre que possível.

Portanto, para copiar os fluxos com ffmpeg, você deve:

ffmpeg -i video.mp4 -codec copy video.avi

( Como o @ Peter.O mencionou , a ordem das opções é importante, então é para onde -codec copydeve ir. Você ainda pode mantê- -same_quantlo, mas isso não terá nenhum efeito, pois você não está recodificando os fluxos.)

njsg
fonte
Sua solução funciona para mim. Vejo que avconvagora é recomendado no lugar ffmpege de fato é o que eu usei.
Faheem Mitha 29/09
3

No FreeBSD 8. 2, tentei a cópia -codec, mas também obtive a mensagem desconhecida decodificada. Após tentativa e erro, encontrei o que está funcionando no FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
binyo66
fonte