Cómo convertir un MKV a AVI con una pérdida mínima

23

Para convertir un MKV a AVI, hago dos cosas. Lo primero que hago es esto:

ffmpeg -i filename.mkv -vcodec copy -acodec copy output.avi

o esto:

ffmpeg -i filename.mkv -sameq -acodec copy output.avi

Cualquiera de estos convertirá el MKV a un AVI, pero el problema es que el video no se reproduce sin problemas por alguna razón. Sin embargo, está bien, porque si hago una cosa más, se arregla:

ffmpeg -i output.avi -vcodec mpeg4 -b 4000k -acodec mp2 -ab 320k converted.avi

Después de hacer esto, el archivo se reproduce sin problemas. Tuve éxito al hacerlo de esta manera para un archivo, pero luego lo probé en otro archivo y hay una pérdida leve pero notable en la calidad del video. Este es el resultado que obtengo al hacer el segundo paso:

FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 29 2010 18:02:10 with gcc 4.2.1 (Apple Inc. build 5664)
  configuration: 
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0

Seems stream 0 codec frame rate differs from container frame rate: 359.00 (359/1) -> 29.92 (359/12)
Input #0, avi, from 'output.avi':
  Metadata:
    ISFT            : Lavf52.64.2
  Duration: 00:04:17.21, start: 0.000000, bitrate: 3074 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], 29.92 fps, 29.92 tbr, 29.92 tbn, 359 tbc
    Stream #0.1: Audio: vorbis, 48000 Hz, stereo, s16
Output #0, avi, to 'converted.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], q=2-31, 4000 kb/s, 29.92 tbn, 29.92 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 320 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

Solo utilicé configuraciones arbitrariamente grandes en el segundo paso y funcionó bien antes, pero no en este caso. ¿Qué configuraciones debo usar?

tony_sid
fuente
Esto es lo que me dio ffmpeg para sameq: se eliminó la opción 'sameq'. Si está buscando una opción para preservar la calidad (que no es para lo que era -sameq), use -qscale 0 o una opción de factor de calidad equivalente.
DavidG

Respuestas:

25

Para copiar el flujo de bits de video y audio, sin pérdida de calidad:

ffmpeg -i filename.mkv -c:v copy -c:a copy output.avi

Si desea que FFmpeg convierta video y audio automáticamente:

ffmpeg -i filename.mkv output.avi
RobotHumanos
fuente
77
La configuración predeterminada de FFmpeg tiende a ser horrible. Aquí hay una guía general para codificar con varios códecs; El wiki de FFmpeg tiene guías más detalladas.
evilsoup
El primer archivo creado por el código que estaba dañado no se reprodujo en VLC.
codemirror
18
 ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"

Mi sugerencia: use mpeg4 + mp3 en el contenedor avi.

Conocer
fuente
1

Intenta usar ffmulticonverter. Muy útil para mí: es una especie de GUI para ffmpeg y puedes configurar fácilmente todos los parámetros. Además, puede encontrar una lista de todos los formatos de video posibles.

LP

usuario155915
fuente
-3

¿Puedo recomendar un acceso directo que uso regularmente?

ffmpeg -i filename.mkv -sameq output.avi
CarlF
fuente
44
sameq no significa la misma calidad y no debe usarse. De hecho, se eliminó de ffmpeg por completo. En su lugar, establezca la calidad utilizando lo que el códec de destino proporcione.
slhck