.MKV a .MP4 con 2 bandas sonoras (audio)

0

Encontré este hilo: la configuración del freno de mano para convertir MKV a MP4 manteniendo la calidad original

Y puedo "convertir" .MKV a .MP4 con el siguiente código:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na .mp4"
pause

El único problema es que hay 2 carriles de audio. El alemán y el inglés. Con el código anterior, solo copia el idioma alemán (1er). Pero no el segundo idioma de audio. ¿Cómo puedo hacer eso?

Por el momento, acabo de convertir .MKV a .MP4 solo con lang alemán. Pero quiero poder cambiar el idioma con mi reproductor VLC de alemán a inglés.

¡Gracias por tu ayuda!

EDITAR: He encontrado ese hilo aquí: http://ffmpeg.gusari.org/viewtopic.php?f=25&t=611

Y probé con esa información. Cambié mi código anterior, a este código:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -map 0:0 -map 0:1 -map 0:2 -c:v copy -c:a:0 copy -c:a:1 copy "%%~na.mp4"
pause

¿Hice algo mal aquí? ¿Cómo podría agregar los subtítulos en alemán / inglés a eso? SI agregaría un mapa de subtítulos allí, y mi .MKV no tiene subtítulos, ¿sería un problema? Solo quiero crear un archivo .bat que convierta un .MKV con 2 bandas sonoras y 2 subtítulos. Para poder "remux" (o convertir no sé) todos mis archivos .MKV a .MP4 sin perder ninguna información.

Por el momento, mi .MKV no tiene subtítulos, por lo que no es importante. Pero es mejor prepararse para el futuro, ¿verdad?

Entonces, dígame si lo hice bien, y quizás también cómo agregar los subtítulos. Es la primera vez que uso FFmpeg. Acabo de descargarlo, nunca me enteré. Realmente nunca usé el CMD para eso.

Benjamin Schäfer
fuente
Debería mostrar un comando de ejemplo real sin guión y la salida completa de la consola. El problema es que Matroska admite muchos más formatos de video, audio, subtítulos y datos que MP4. Si desea transmitir una copia (re-mux) de MKV a MP4, debe asegurarse de que la salida puede admitir los diversos formatos y / o volver a codificar los que no son compatibles. Además, el soporte MP4 para subtítulos apesta.
llogan
Podría copiar y pegar todo el CMD si me ayuda. Bueno, realmente no necesito obtener los subtítulos. Solo quiero cambiar el .MKV a .MP4 con TODOS los carriles de audio (bandas sonoras). Con ese código funcionó. Tengo voz en alemán e inglés. ¿Pero tengo que ajustar eso manualmente cada vez? Entonces, cuando un archivo tiene 3 carriles de audio, ¿debo ajustarlo cada vez: - \ :-( ?? Aquí está el registro completo: pastie.org/private/9lqyvhyotnh1o4gp6rg5g
Benjamin Schäfer
Solo necesito saber si ese código es correcto. Quiero decir que funciona 100% bien. Obtengo el mismo tamaño de archivo, la misma calidad (en comparación, debería ser la misma) y obtuve ambas pistas de audio. Alemán e inglés Así que normalmente podría comenzar a convertir mis 400 archivos ... Mi Sony EX725 no puede reproducir .MKV pero mi nuevo Sony 905A sí. Así que solo trato de convertir todo .MKV a .MP4 para el viejo televisor Sony.
Benjamin Schäfer
[mp4 @ 00000000002fb3a0] Codec for stream 0 does not use global headers but cont ainer format requires global headers [mp4 @ 00000000002fb3a0] Codec for stream 1 does not use global headers but cont ainer format requires global headers [mp4 @ 00000000002fb3a0] Codec for stream 2 does not use global headers but cont ainer format requires global headers [mp4 @ 00000000002fb3a0] track 1: codec frame size is not set [mp4 @ 00000000002fb3a0] track 2: codec frame size is not setEse es un error que obtengo. Pero el archivo funciona. Puede verlo, puede cambiar el audio, la misma calidad ... hmm
Benjamin Schäfer
Un script de una ejecución no funcionará aquí, porque no conoce el número y el orden o las transmisiones. Lo que necesita es ordenar las películas en 1vid1aud1sub y 1vid2aud2sub u otras variaciones, y solo entonces puede usar -map y la correspondiente -c: copia. Para subtítulos tienes -c: s. Esos errores pueden estar relacionados con la forma en que MKV almacena las especificaciones de códec en su propio contenedor, mientras que MP4 difiere. Si funciona, no intentes arreglarlo.
JasonXA

Respuestas:

1

ffmpeg no asigna automáticamente todas las pistas; la selección de transmisión predeterminada solo asignará un audio, un video y una pista de subtítulos a la salida. Si desea asignar todas las transmisiones, use -map 0. Si desea poder seleccionar qué asignar, primero deberá analizar el archivo de entrada ( ffmpeg -i input.mkv) y utilizar algunas secuencias de comandos para construir el comando de conversión final. ffprobe puede ser útil para eso. Ver FFmpeg Wiki: FFprobe Tips para ejemplos.

Puede especificar -c copyque la transmisión copie todas las transmisiones, sin importar de qué tipo sean. También puede indexar transmisiones de video y audio por separado, por lo que su comando se puede acortar a:

ffmpeg -i input.mkv -c copy -map 0 output.mp4
slhck
fuente
Gracias por tu respuesta! Mi guión final fue for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na.mp4" pausey funcionó. Obtuve sonido en alemán e inglés, y la misma calidad / tamaño de video. PERO recibí un mensaje de error! Incluso con ese mensaje de error, todavía funciona. Incluso en el televisor Sony a través de USB. ¡Vea el mensaje de error en un comentario arriba! :-) ¿Sabes lo que significa el error? Lo busqué en Google, y no obtuve respuesta.
Benjamin Schäfer
¿Puedes subir un registro completo de la línea de comandos en algún lugar y dejarme un comentario? (por ejemplo, pastebin.com )
slhck
Ya lo hice: pastie.org/private/9lqyvhyotnh1o4gp6rg5g (en una publicación anterior). Ese es todo el registro que obtuve de la CMD. Es la primera vez que uso FFmpeg. Bueno, funcionó. Tengo la misma calidad de imagen, sonido alemán e inglés. Y el mismo tamaño de archivo que tiene el .MKV. Y funciona para mi televisor Sony. El televisor Sony no puede reproducir .MKV (el televisor antiguo), pero puede reproducir .MP4
Benjamin Schäfer
0

Hay un programa de código abierto llamado VCT: https://sourceforge.net/projects/videoconvertertranscoder/?source=directory

Es una GUI para ffmpeg. También puede editar el comando ffmpeg manualmente. Tiene una pestaña llamada Transcode donde puedes volver a empaquetar MKV a MP4, pero esta pestaña no tiene opciones para agregar subtítulos.

Si desea volver a empaquetar MKV a MP4 y agregar subtítulos al mismo tiempo, este es el procedimiento:

  1. Vaya a la pestaña Convertir y seleccione su Archivo de entrada
  2. En el contenedor de video, seleccione copiar y en el códec de audio también seleccione copiar
  3. Haga clic en agregar subtítulos y seleccione su archivo SRT externo
  4. En el cuadro de texto del comando ffmpeg, reemplace la parte del subtítulo -c: s srt "" con -c: s mov_text ""
  5. haga clic en Agregar a la lista de lotes y luego haga clic en Iniciar codificación se realizará en uno o dos minutos.

Por supuesto, si no le importa codificar dos veces y no le gusta escribir comandos, también puede hacerlo así:

  1. seleccione la pestaña Transcodificar y arrastre su archivo al archivo de entrada .. , haga clic en Inicio , se hará en un minuto.
  2. Luego, seleccione MP4 recién codificado y en el contenedor Video seleccione copiar y en Códec de audio haga clic en copiar .
  3. Haga clic en Agregar a la lista de lotes y luego haga clic en Inicio . La codificación se realizará en un minuto.

captura de pantalla de hacer la codificación solicitada MKV a MP4

dotokija
fuente
0

Bueno, estoy usando un archivo .bat como este:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na.mp4" 

Pero recibo un mensaje de error, pero el .MP4 aún funciona bien. Aquí un archivo de registro: pastie.org/private/9lqyvhyotnh1o4gp6rg5g

El problema es que mi viejo televisor Sony a veces se congela mientras veo el .MP4. No puedo decirte si es solo el "reproductor" del televisor o el archivo convertido. La GUI parece buena. Pero si quieres convertir como 20 archivos seguidos, es mucho hacer clic. El archivo .bat simplemente lo hace automáticamente con todos esos archivos en una carpeta.

Quizás alguien sabe por qué recibo un mensaje de error, y si este script es incorrecto o no :)

Benjamin Schäfer
fuente
Recomendaría que elimine la pregunta secundaria en su respuesta y la haga como una nueva pregunta que haga referencia a esta. Aparte de eso, su respuesta es bastante buena.
Burgi