Conversión por lotes de H.265 a H.264
Estos ejemplos fueron escritos para recientes ffmpeg
. Ahórrese algunos problemas y descargue una versión reciente. Luego ponga el ffmpeg
binario ~/bin
o /usr/local/bin
(puede que tenga que cerrar la 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 se enviará a un directorio llamado h264vids
.
Este ejemplo supone que sus entradas son .mp4
. Si no, cambie la .mp4
instancia en el ejemplo a su tipo de archivo de entrada, o simplemente use el codicioso *
por sí mismo.
Ajuste -crf
por calidad y -preset
por velocidad / eficiencia de codificación. 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 es usar los valores predeterminados para estas opciones). Consulte FFmpeg Wiki: H.264 para obtener más información sobre estas opciones.
Salida MP4
Este 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, el audio se copiará en secuencia (re-muxed) como está y se evitará una nueva codificación innecesaria. Si el audio de entrada no es AAC, se volverá a codificar en AAC.
Aquí hay un script simple que muestra cómo hacer esto usando ffprobe
y ffmpeg
. Cópielo y guárdelo en el directorio que contiene sus videos para convertir, dele permiso de ejecución chmod +x yourscriptname
y luego ejecútelo ./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 se enviará a un directorio llamado h264vids
.
Este ejemplo supone que sus entradas son .mkv
. Si no, cambie la .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 ctrl+ zy reanudar con fg
.
sleep 3
es innecesario (pero posible útil para terminar el ciclo), y noINPUT=$1
tiene sentido ya que lo está ejecutando directamente en un shell interactivo.