ffmpeg: ¿Recortar varios videos a la vez sin volver a codificarlos?

ffmpeg: ¿Recortar varios videos a la vez sin volver a codificarlos?

Tengo una carpeta donde cada archivo mp4 necesita recortar los primeros 10 minutos. Estoy usando lo siguiente para recortar de forma individual, pero me lleva demasiado tiempo hacerlo uno por uno.

ffmpeg -i "untrimmed.mp4" -ss 00:10:00 -c copy "trimmmed.mp4"

¿Existe una manera sencilla de recortar varios archivos de vídeo a la vez?

Editar: desde entonces encontré una solución alternativa en PowerShell: ejemplo con 11 minutos

Get-ChildItem -Filter *.mp4 | ForEach -Process { ffmpeg -i $_ -ss 00:11:00 -c copy ($_.BaseName + '_Trimmed.mp4')}

Respuesta1

El concepto se llama procesamiento por lotes y el método depende del sistema, ya que ffmpeg carece de esta capacidad en sí mismo.

En Windows, es posible que desee utilizarlo ForFilespara buscar archivos que coincidan con el patrón (por ejemplo *.mp4, ) y un /Cmodificador para ejecutar el comando ffmpeg en los resultados.

En Linux y MacOS la línea de comandos findhace lo mismo con el switch -exec.

En cualquier caso, puedes usar bucles, pero complican demasiado las cosas cuando esto es todo lo que quieres hacer.

Para un ejemplo de Linux, este comando buscará en la carpeta actual .archivos con nombres que coincidan con *.mp4el patrón, luego ejecutará ffmpeg para cada resultado {}, generando salida a, por ejemplo, untrimmed.mp4_trim.mp4(puedes trabajar con eso, ¿verdad?). El escapado ;al final cierra el -execinterruptor:

find . -iname '*.mp4' -exec ffmpeg -i '{}' -ss 00:10:00 -c copy '{}_trim.mp4' \;

información relacionada