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 ffmpegbinario ~/bino /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 .mp4instancia en el ejemplo a su tipo de archivo de entrada, o simplemente use el codicioso *por sí mismo.
Ajuste -crfpor calidad y -presetpor 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 ffprobey ffmpeg. Cópielo y guárdelo en el directorio que contiene sus videos para convertir, dele permiso de ejecución chmod +x yourscriptnamey 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 .mkvinstancia en el ejemplo a su tipo de archivo de entrada, o simplemente use el codicioso *por sí mismo.
Consulte la nota anterior sobre -crfy -preset.
Puede pausar la codificación con ctrl+ zy reanudar con fg.
sleep 3es innecesario (pero posible útil para terminar el ciclo), y noINPUT=$1tiene sentido ya que lo está ejecutando directamente en un shell interactivo.