¿Cómo convertir un archivo .mkv en un archivo .mp4 sin pérdida?

103

Necesito convertir un archivo de video del contenedor Matroska al contenedor mp4. El archivo Matroska contiene una pista de video h.264 y una pista de sonido AC3. Debería ser posible hacer esto sin pérdidas, pero ¿cómo hacerlo con las herramientas nativas de Ubuntu?

La transcodificación no es una opción.

    
pregunta Seppo Erviälä 25.06.2011 - 01:22

6 respuestas

135

Quizás la herramienta más fácil para eso es ffmpeg , o avconv del paquete libav-tools . Libav es una bifurcación de FFmpeg, que Ubuntu cambió por unos años hasta Ubuntu 15.04. Es uno de los back-end para muchas de las herramientas de GUI mencionadas en otras respuestas.

Cambiar el contenedor sin volver a encontrar el contenido no podría ser más simple:

ffmpeg -i input.mkv -codec copy output.mp4
  • Detecta automáticamente una conversión de contenedor de Matroska a MP4 en función de los nombres de archivo de entrada / salida.

  • -codec copy secuencia copia, o "re-muxes", las transmisiones desde la entrada hasta la salida sin volver a codificar. Piénselo como copiar y pegar.

  • El comportamiento de selección de secuencia predeterminado es seleccionar solo una secuencia por tipo de secuencia. Por ejemplo, si su entrada tiene dos transmisiones de video y una transmisión de audio, entonces solo se seleccionará la transmisión de video con el tamaño de fotograma más grande. Agregue -map 0 si desea seleccionar todas las transmisiones desde la entrada.

  • Es posible que algunos contenedores no admitan algunos formatos. Así que comprueba si el formato contenedor elegido, ya sea mkv , mp4 o incluso avi , es compatible con todo el contenido en tus archivos (video, audio, subtítulos, datos, etc.). Por ejemplo, mp4 no admite SubRip subtítulos ( .srt files).

respondido por el MestreLion 02.10.2012 - 01:59
24

Obtenga el software necesario

sudo apt-get install gpac mkvtoolnix

Extrae video y audio del archivo matroska

Primero debes verificar qué pistas contiene el archivo matroska con

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

Luego extrae el video y el audio según sus pistas con:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

Mux audio y video en mp4 containter

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

Tuve que agregar la opción -fps 24 porque MP4Box no detectó video fps correctamente. Dependiendo del uso, AC3 la pista de audio debe volver a codificarse en otra cosa antes de hacer mux.

Ahora tiene flujos remotos del contenedor matroska en el contenedor mp4 sin perder calidad.

EDITAR: MP4 no admite oficialmente audio AC3, por lo que la pista de audio se debe convertir a un formato compatible (por ejemplo, AAC, MP3) si desea que el archivo se pueda reproducir con algo más que VLC.

    
respondido por el Seppo Erviälä 25.06.2011 - 13:03
12

Puedes usar Avidemux

Tiene una buena interfaz GUI.

Al convertir de mkv a mp4, no se vuelve a codificar.

La conversión se realiza en un minuto (para un video de 60 minutos).

  1. sudo apt-get install avidemux

  2. Abra el archivo mkv en avidemux.

  3. Seleccione el modo seguro si se le solicita.

  4. Deja el video como copia.

  5. Elija Archivo- & gt; Propiedades Compruebe si el códec de audio es aac .

    1. Si el códec de audio NO es aac, seleccione aac(faac) .
    2. De lo contrario, déjalo como copy . (A veces, usando esta opción, el audio puede no estar sincronizado o distorsionado, en ese caso seleccione aac(faac) en su lugar.)
  6. Seleccione mp4 para el formato.

  7. Seleccione guardar, elija la ubicación y escriba un nombre de archivo con .mp4 como la extensión.

Nota: a veces (~ 10% de probabilidad) puede fallar. Luego usa handbrake(re-encode) .

Nota 2: hay dos enlaces que lo ayudan:

enlace

enlace

    
respondido por el loksena 03.08.2012 - 18:43
2

Puedes usar mi aplicación, dmMediaConverter . Simplemente deje " copiar " para ambas transmisiones marcadas (sin transcodificación) y ponga .mp4 en el nombre del archivo de salida. Eso es. Muy simple. enlace

    
respondido por el mdalacu 21.06.2017 - 08:17
-2

Dado que MPEG Parte 14 admite h.264 y AC3 de forma nativa sin transcodificación, simplemente puede cambiar el nombre del archivo para que tenga una extensión .mp4 en lugar de una extensión .mkv .

    
respondido por el Richard 26.12.2013 - 16:21
-2

Puede intentar HANDBRAKE agregando su PPA escribiendo este código en la terminal:

sudo add-apt-repository ppa:stebbins/handbrake-releases
    
respondido por el 13east 25.06.2011 - 05:13

Lea otras preguntas en las etiquetas