¿Cómo obtener la mejor calidad al convertir de mp4 a avi con ffmpeg?

11

Cuando uso esto, la calidad no se ve mal.

ffmpeg -same_quant -i video.mp4 video.avi

En la ffmpegdocumentación está escrito: "Tenga en cuenta que esto NO ES LA MISMA CALIDAD. No use esta opción a menos que sepa que la necesita".

¿Obtengo -same_quantla mejor calidad o hay una opción que ofrezca la misma calidad que la entrada y es más recomendable?

sid_com
fuente
Dependiendo de los códecs utilizados (algunos códecs son incompatibles con algunos contenedores), siempre puede simplemente copiar las secuencias ( -codec copy). Esa es la mejor manera de evitar cambios en la calidad, ya que no está volviendo a codificar las transmisiones, solo vuelve a empaquetarlas en un contenedor diferente.
njsg
Cuando intento esto me sale: Unknown decoder 'copy'.
sid_com
3
Parece que -codec copydebe ir después -i video.mp4 , ¿puedes intentarlo ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantfunciona aquí también, pero no hará nada, ya que esto solo copia las transmisiones)
njsg
Con respecto a la ubicación de las opciones de línea de comandos de ffmpeg , consulte la Documentación de ffmpeg - 2 Descripción : Aquí hay un extracto: Como regla general, las opciones se aplican al siguiente archivo especificado. Por lo tanto, el orden es importante ...
Peter.O
¡Gracias! Ahora con -codec copyel lugar correcto es funciona.
sid_com

Respuestas:

14

(adaptado de los comentarios anteriores)

Dependiendo de los códecs utilizados (algunos códecs son incompatibles con algunos contenedores), siempre puede simplemente copiar las secuencias ( -codec copy). Esa es la mejor manera de evitar cambios en la calidad, ya que no está volviendo a codificar las transmisiones, solo vuelve a empaquetarlas en un contenedor diferente.

Cuando se trata de archivos de audio / video, es importante tener en cuenta que los contenedores son en su mayoría independientes de los códecs utilizados. Es común ver personas que se refieren a los archivos como "video AVI" o "video MP4", pero esos son contenedores y nos dicen poco acerca de si un reproductor podrá reproducir las transmisiones, ya que, aparte de las limitaciones técnicas (por ejemplo, AVI puede tener problemas con h264 y Ogg Vorbis ), puede usar cualquier códec.

-same_quantparece ser una forma de decirle a ffmpeg que intente lograr una calidad similar, pero tan pronto como vuelva a codificar el video (al menos con códecs con pérdida), no tiene forma de obtener la misma calidad. Si le preocupa la calidad, una buena regla general es evitar volver a codificar las transmisiones cuando sea posible.

Entonces, para copiar las transmisiones con ffmpeg, harías:

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

( Como mencionó @ Peter.O , el orden de las opciones es importante, así que ahí es donde -codec copydebe ir. Aún puede mantenerlo -same_quant, pero no tendrá ningún efecto ya que no está volviendo a codificar las transmisiones).

njsg
fuente
Tu solución funciona para mí. Veo que avconvahora se recomienda en lugar de ffmpegy de hecho es lo que usé.
Faheem Mitha
3

En FreeBSD 8. 2, probé -codec copy pero también recibí un mensaje desconocido decodificado. Después de la prueba y error, encontré el que funciona en FreeBSD:

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