No olvides que en las ciencias un error puede tener diversas soluciones, de igual modo nosotros aquí te enseñamos lo más óptimo y eficiente.
Solución:
Supongo que realmente hay dos preguntas aquí…
- ¿Cómo convierto archivos por lotes?
- ¿Cómo escalar automáticamente un video?
¿Cómo convierto archivos por lotes?
Estos scripts deberían hacer el truco…
ventanas
for %%i in (*.mp4) do (
ffmpeg -y -i "%%i" << TODO >> "%%~ni_shrink.mp4"
)
linux (¡NO PROBADO!)
for i in *.mp4;
do
ffmpeg -y -i "$i" << TODO >> "$i%.mp4_shrink.mp4";
done
(No estoy muy seguro acerca de la expansión del archivo de salida en el script de Linux, vale la pena validarlo).
¿Cómo escalar automáticamente un video?
Esto es un poco más complicado. Como tiene su comando, la relación de aspecto potencialmente se estropeará. Opciones aquí…
- Escale el video, ignore la relación de aspecto. Resultado = video distorsionado
- Escale el video, mantenga la relación de aspecto para que la altura (o el ancho) escalada se ajuste para que quepa. Resultado = óptimo
- Escale el video, mantenga la relación de aspecto y el relleno con barras negras para que el tamaño del video sea exactamente 480×320. Resultado = tamaño de archivo desperdiciado/aumentado
- Recorte la entrada antes de escalar para que “llene” la resolución de 480×320. Resultado = video incompleto
La opción 2 sería la solución preferida, de lo contrario, (probablemente innecesariamente) está aumentando el tamaño del archivo de salida. Opción 3, daré una solución parcialmente probada. Opción 4 Ni siquiera voy a tocar.
Opción 2: Escale el video, mantenga la relación de aspecto para que la altura se ajuste a la medida
ffmpeg -y -i "%%i" -vf scale=480:-2,setsar=1:1 -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
Opción 3: escala el video, mantén la relación de aspecto y rellena con barras negras para que el tamaño del video sea exactamente 480×320
ffmpeg -y -i "%%i" -vf "[in]scale=iw*min(480/iw,320/ih):ih*min(480/iw,320/ih)[scaled]; [scaled]pad=480:320:(480-iw*min(480/iw,320/ih))/2:(320-ih*min(480/iw,320/ih))/2[padded]; [padded]setsar=1:1[out]" -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
Puede usar la herramienta ffmpeg para ello e ingresar el comando
ffmpeg -i input.mp4 -vf scale=480:320 output_320.mp4
o si desea cambiar la relación de aspecto del video, use setdar
ffmpeg -i input.mp4 -vf scale=480:320,setdar=4:3 output_320.mp4