Ajustes de freno de mano para convertir MKV a MP4 manteniendo la calidad original

44

Tengo un montón de archivos MKV que necesito convertir a MP4 y mi software elegido es Handbrake.

Estoy atascado en qué configuración sería mejor para la conversión. Quiero retener la calidad total. ¿Acabo de convertir con la configuración original y no cambio nada o hay algo específico que deba cambiar?

naranja
fuente
Aquí hay una guía bastante detallada sobre la configuración de Handbrake mattgadient.com/2013/06/12/…
enero
Recibo un error en algunos archivos (para mkv a mp4 y mp4 a mkv): el archivo de salida # 0 no contiene ninguna secuencia. ¿Alguien tiene alguna idea de lo que esto significa?
PrimitiveNom

Respuestas:

86

¿Cuál es el problema con el freno de mano?

Cuando utilice Handbrake para convertir de un formato contenedor a otro (es decir, MKV a MP4 en su caso), Handbrake volverá a codificar el video. Consulte también la solicitud de función correspondiente que habría habilitado la transferencia de video:

Lo sentimos, no está previsto agregar passthrough de video. HandBrake está diseñado para ser un transcodificador de video. No fue diseñado para permitir el paso a través.

Por lo tanto, cada vez que cambie los contenedores con Handbrake, su video se volverá a codificar, lo que significa que a) toma tiempo yb) puede introducir una pérdida de calidad.

¿Tengo que volver a codificar? ¿No podría simplemente cambiar el contenedor?

Como el paso a través no es posible, pregúntese: ¿Necesito volver a codificar? Si solo desea cambiar el contenedor de MKV a MP4, generalmente no necesita codificar nada , simplemente cambie la "envoltura" alrededor del video. Esto no pierde calidad, y será un proceso mucho más rápido.

Puede intercambiar contenedores fácilmente con FFmpeg , solo tiene que decirle que copie las transmisiones de video y audio:

ffmpeg -i input.mkv -c copy -map 0 output.mp4

También hay herramientas como MP4Box que también pueden crear contenedores MP4, lo mismo existe para MKV con MKVtoolnix .

Sin embargo, hay una gran advertencia: esto solo funciona si los códecs de audio y video son compatibles con el contenedor de destino (MP4), que es el caso de H.264 / H.265 y AAC, por ejemplo, pero no para muchos otros. Además, el soporte de formato de subtítulos para MP4 es diferente de MKV, y en realidad es bastante restringido, por lo que este comando puede fallar.

Si este comando no funciona, y si su entrada usa los códecs incorrectos para el contenedor de salida, probablemente tendrá que volver a codificar . En este caso, los códecs se adaptarán al contenedor de salida.

Para entender por qué esto es necesario, es importante aprender la diferencia entre los códecs de video y los contenedores . Esto le ayudará a comprender por qué el cambio de contenedores funciona y por qué los contenedores MP4 y MKV tienen poco que ver con los códecs de video, en realidad.

¿Por qué la codificación es mala de todos modos?

Usted puede (por lo general) no conserva la calidad total al codificar un vídeo que ya haya sido codificado. Esto se debe a que el original ya se ha comprimido al tirar la información, y al hacerlo nuevamente, está introduciendo la pérdida de generación .

A menudo, desea volver a codificar el video cuando, por ejemplo, sus dimensiones cambian, o necesita una velocidad de bits específica para exprimir su transmisión de video, o su video original usa un códec que no puede reproducir por cualquier razón.

Por lo tanto, si carga su video MKV en Handbrake y lo vuelve a codificar con x264, el codificador H.264 que utiliza Handbrake, guárdelo en un contenedor MP4, perderá calidad pase lo que pase , a menos que establezca la tasa de bits o factor de calidad tan alto que (realmente) no verá la diferencia. Pero entonces, el tamaño del archivo también será más grande.

En el caso ideal, convertiría el video en un video sin comprimir, que no le hará perder calidad, pero le dará archivos de una docena de gigabytes de tamaño, incluso por unos minutos de material de video.

Está bien, ¡pero realmente tengo que volver a codificar!

Si realmente tiene que volver a codificar, asegúrese de no establecer una tasa de bits promedio, pero elija un Factor de velocidad constante , que es algo así como "calidad constante". Al igual que la "tasa de bits variable" para MP3: se asegurará de gastar los bits en las partes de video que los necesitan y mejorará la calidad general, al mismo tamaño de archivo.

Los valores correctos de CRF son de 19 a 24, donde menor significa "mejor". Por lo tanto, puede probar con un Factor de velocidad de 19. Además, asegúrese de establecer el perfil "Alto", que permite que el codificador use todas las campanas y silbatos y optimice la calidad para una velocidad de bits determinada.

slhck
fuente
¡Gracias! Parece que eres el único que parece preocuparse por esta pregunta y ayudarme, seguí tu consejo y parece que la calidad es la misma que la original. :)
naranja
Para algunos archivos mkv esto fallará con (No se pudo escribir el encabezado para el archivo de salida ... códec incorrecto). Use ffprobe -i file.mkv para ver en qué formato está el a / v, es probable que necesite volver a codificar con video x264 y audio aac / ac3
ski_squaw
¿Está 100% seguro de que volver a empaquetar los archivos no causa pérdida de calidad?
PrimitiveNom
1
@BallpointBen No es posible, no: github.com/HandBrake/HandBrake/issues/…
slhck
1
@Hashim Intenté aclarar la publicación según lo solicitado. Y en cuanto a tu pregunta, ya que el freno de mano no permite pasarela, la conversión de MP4 a MKV va a introducir la pérdida de calidad. Y tomará mucho tiempo. Solo hazlo ffmpeg -i input.mp4 -c copy output.mkvy deberías estar bien.
slhck
4

Este trabajo es muy bueno para mi. A continuación se muestra el código para convertir todos los archivos .mkv a .mp4 en Windows.

  • Es posible que deba agregar ffmpeg a su ruta. simplemente puede poner la ruta completa al ejecutable ffmpeg, D: \ apps \ ffmpeg \ bin \ ffmpeg.exe
  • Descarga ffmpeg para Windows aquí.
  • Uso: suelte un archivo .mkv sobre él. Hará todo el directorio.

Guardar en un archivo llamado convert.bat.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause
MonoMagia
fuente
Funciona de maravilla.
Kit Johnson
Puse esto en la carpeta con ffmpeg.exe y luego lo cambié afor %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
davidtbernal