Pregunta ¿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?


75
2018-04-26 00:19


origen


Respuestas:


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

93
2017-11-20 08:35



por Linux y Mac OS esto se puede hacer en una línea, y no es necesario echo, cut, o basename como se muestra en las otras respuestas de Bash, porque 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

por Windows ver esta respuesta por lxs.


90
2017-11-17 20:15



Y en Windows:

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

42
2018-06-17 21:34



Un script de bash de una línea sería fácil de hacer: reemplazar *.avi con su tipo de archivo:

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

15
2017-07-02 22:29



Para convertir con subdirectorios use p. Ej.

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

10
2017-12-12 16:59



Si quieres un 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.


3
2018-04-05 08:58



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.


3
2018-04-25 09:34



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

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


2
2018-05-13 02:15



Si tienes GNU paralela puedes convertir todos los archivos .avi a continuación vid_dir a mp4 en paralelo, usando todos menos 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. GNU parallel aparece en la mayoría de los repositorios de distribuciones de Linux en un paquete que generalmente se llama parallel.


1
2018-05-10 09:37



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' ) );
}

-3
2017-11-07 13:47