¿Cómo se convierte un directorio completo con ffmpeg?

¿Cómo se convierte un directorio / carpeta completo con ffmpeg a través de la línea de comandos o con un script por lotes?

    La respuesta anterior solo creará 1 archivo de salida llamado out.mov. Para hacer un archivo de salida por separado para cada película antigua, intente esto.

    for i in *.avi; do name=`echo $i | cut -d'.' -f1`; echo $name; ffmpeg -i "$i" "${name}.mov"; done 

    Para Linux y macOS esto se puede hacer en una línea, y no necesita echo , cut o basename como se muestra en las otras respuestas de Bash, porque la expansión de parámetros se ocupará de la extensión del nombre de archivo de salida:

     for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done 

    Para Windows, vea esta respuesta por lxs.

    Y en Windows:

     FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3" 

    Una secuencia de comandos bash de una línea sería fácil de hacer: reemplace *.avi con su tipo de archivo:

     for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov ; done 

    Para convertir con subdirectorios use, por ejemplo

     find . -exec ffmpeg -i {} {}.mp3 \; 

    Si desea una interfaz gráfica para procesar por lotes con ffmpegX, pruebe Quick Batcher . Es gratis y tomará tus últimas configuraciones de ffmpegX para convertir los archivos que ingresas en él.

    Tenga en cuenta que no puede arrastrar y colocar carpetas en Quick Batcher. Así que seleccione los archivos y luego póngalos en Quick Batcher.

    Para cualquiera que quiera convertir por lotes algo con ffmpeg pero quisiera tener una interfaz conveniente de Windows, desarrollé este front-end:

    https://sourceforge.net/projects/ffmpeg-batch

    Se agrega a ffmpeg una interfaz de moda de ventana, barras de progreso y la información restante de tiempo, características que siempre me perdí cuando usé ffmpeg.

     for i in *.flac; do name=`echo "${i%.*}"`; echo $name; ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3; done 

    Procesar por lotes archivos de flac en mp3 (seguro para nombres de archivos con espacios) usando [1] [2]

    Si tiene GNU paralelo , puede convertir todos los archivos .avi debajo de vid_dir a mp4 en paralelo, utilizando todos excepto uno de los núcleos de su CPU con

     find vid_dir -type f -name '*.avi' -not -empty -print0 | parallel -0 -j -1 ffmpeg -loglevel fatal -i {} {.}.mp4 

    Para convertir desde / a diferentes formatos, cambie '*.avi' o .mp4 según sea necesario. El paralelo de GNU aparece en la mayoría de los repositorys de distribución de Linux en un paquete que generalmente se llama parallel .

    pequeña secuencia de comandos php para hacerlo:

     #!/usr/bin/env php < ?php declare(strict_types = 1); if ($argc !== 2) { fprintf ( STDERR, "usage: %s dir\n", $argv [0] ); die ( 1 ); } $dir = rtrim ( $argv [1], DIRECTORY_SEPARATOR ); if (! is_readable ( $dir )) { fprintf ( STDERR, "supplied path is not readable! (try running as an administrator?)" ); die(1); } if (! is_dir ( $dir )) { fprintf ( STDERR, "supplied path is not a directory!" ); die(1); } $files = glob ( $dir . DIRECTORY_SEPARATOR . '*.avi' ); foreach ( $files as $file ) { system ( "ffmpeg -i " . escapeshellarg ( $file ) . ' ' . escapeshellarg ( $file . '.mp4' ) ); }