Saltar al contenido

Convierta por lotes H.265 mkv a H.264 con ffmpeg para que los archivos sean compatibles para la recodificación

El tutorial o código que hallarás en este post es la resolución más fácil y efectiva que hallamos a esta duda o problema.

Solución:

Si, usando ffmpeg.

Abra un terminal y diríjalo al directorio que contiene los archivos codificados H.265, asumiendo que tiene ffmpeg y las bibliotecas apropiadas instaladas y suponiendo que estén en formato MKV, copie y pegue lo siguiente en la ventana de terminal.

INPUT="$1"
for i in *.mkv ; do
    ffmpeg -i "$i" -bsf:v h264_mp4toannexb -sn -map 0:0 -map 0:1 -vcodec libx264 "$i.ts"
    mv "$i.ts" "$i.mpg"
    sleep 3
done

Ahí tienes. Esto se convertirá a h.264 en un contenedor MPG en el mismo directorio.

Explicación de los interruptores de comando:

  • for i in *.mkv ; do ... done

    Esto configura todos los archivos .mkv en un directorio para ser incluidos en el proceso por lotes. Esto se puede cambiar para adaptarse a la extensión del contenedor de los archivos que desea procesar.

  • ffmpeg -i "$i"

    Ejecuta el programa ffmpeg y pide que se procesen los archivos.

    • -bsf:v activa el filtro de flujo de bits de video que se utilizará.

    • h264_mp4toannexb – Es el filtro de flujo de bits que está activado.

      Convierta un tren de bits H.264 del modo con prefijo de longitud al modo con prefijo de código de inicio (como se define en el anexo B de la especificación UIT-T H.264).

      Esto es requerido por algunos formatos de transmisión, normalmente el formato de transmisión de transporte MPEG-2 (mpegts) el procesamiento de MKV h.264 (actualmente) requiere esto, si no está incluido, obtendrá un error en la ventana del terminal indicándole que lo use.

    • -sn detiene la transmisión de subtítulos (para aquellos que no quieren subtítulos en su video). Esto es opcional y se puede eliminar.

    • -map 0:0 -map 0:1 Le dice a ffmpeg que solo procese las dos primeras secuencias del archivo (0:0 es la transmisión de video, 0:1 es la primera secuencia de audio del archivo). Esto hace dos cosas, elimina los flujos de audio sobrantes, por lo general, el primer flujo de audio es en inglés, pero no siempre. Otras secuencias, como los subtítulos incrustados, se eliminan reduciendo el tamaño del archivo. Esto también es opcional. string. Puedes usar ffprobe para ver las transmisiones disponibles en el archivo. -map es opcional y se puede descartar del comando.

    • -vcodec libx264

      Esto le dice a ffmpeg que codifique la salida a H.264

    • "$i.ts"

      Guarda la salida en formato .ts, esto es útil para no sobrescribir sus archivos de origen.

  • mv "$i.ts" "$i.mpg" Convierte la extensión del archivo a MPG en el mismo directorio. Esto se puede configurar para enviarlo a cualquier directorio que desee.

  • sleep 3 – permite que el proceso descanse dando tiempo a ffmpeg para poner en cola el siguiente archivo

Conversión por lotes de H.265 a H.264

Estos ejemplos fueron escritos para ffmpeg. Ahórrese problemas y descargue una versión reciente. Entonces pon el ffmpeg binario en ~/bin o /usr/local/bin (es posible que tenga que cerrar sesión y luego iniciar sesión para que se note).

Salida de Matroska

mkdir h264vids
for f in *.mp4; do ffmpeg -i "$f" -map 0 -c copy -c:v libx264 -crf 23 -preset medium h264vids/"$f%.*.mkv"; done
  • Este ejemplo saldrá a un directorio llamado h264vids.

  • Este ejemplo asume que sus entradas son .mp4. Si no es así, cambie el .mp4 instancia en el ejemplo a su tipo de archivo de entrada, o simplemente use el codicioso * por sí mismo.

  • Ajustar -crf por la calidad y -preset para codificar velocidad / eficiencia. O simplemente elimine estas opciones y use los valores predeterminados que son bastante buenos y deberían ser suficientes para la mayoría (el ejemplo está usando los valores predeterminados para estas opciones). Consulte FFmpeg Wiki: H.264 para obtener más información sobre estas opciones.

Salida MP4

Éste es un poco más complicado. Esto realizará una codificación condicional dependiendo de si el audio de entrada es AAC o no. Si el audio de entrada es AAC, entonces el audio se copiará (re-muxed) como está y se evitará la recodificación innecesaria. Si el audio de entrada es no AAC, luego se volverá a codificar a AAC.

Aquí hay una secuencia de comandos simple que demuestra cómo hacer esto usando ffprobe y ffmpeg. Cópialo y guárdalo en el directorio que contiene tus videos para convertir, dale permiso de ejecución con chmod +x yourscriptname, luego ejecútalo con ./yourscriptname.

#!/bin/bash

mkdir h264vids

for f in *.mkv
do
  audioformat=$(ffprobe -loglevel error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1:nk=1 "$f")
  if [ "$audioformat" = "aac" ]; then
    ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart h264vids/"$f%.*.mp4"
  else
    ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a aac -movflags +faststart h264vids/"$f%.*.mp4"
  fi
done
  • Este ejemplo saldrá a un directorio llamado h264vids.

  • Este ejemplo asume que sus entradas son .mkv. Si no es así, cambie el .mkv instancia en el ejemplo a su tipo de archivo de entrada, o simplemente use el codicioso * por sí mismo.

  • Consulte la nota anterior sobre -crf y -preset.

  • Puede pausar la codificación con control+z y reanudar con fg.

Te mostramos reseñas y valoraciones

Recuerda compartir este escrito si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *