Solución:
Supongo que realmente hay dos preguntas aquí …
- ¿Cómo convierto archivos por lotes?
- ¿Cómo escalo 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 (¡SIN PROBAR!)
for i in *.mp4;
do
ffmpeg -y -i "$i" << TODO >> "${i%.mp4}_shrink.mp4";
done
(No estoy muy seguro de la expansión del archivo de salida en el script de Linux, vale la pena validarlo).
¿Cómo escalo automáticamente un video?
Esto es un poco más complicado. A medida que tenga 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 ancho) escalada se ajuste para que se ajuste. 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
- Recorta 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, aumentará (probablemente innecesariamente) 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 para que se ajuste
ffmpeg -y -i "%%i" -vf scale=480:-2,setsar=1:1 -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
Opción 3: 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
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