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 usarffprobe
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.