Как конвертировать весь каталог с помощью ffmpeg? - PullRequest
123 голосов
/ 26 апреля 2011

Как конвертировать весь каталог / папку с помощью ffmpeg через командную строку или с помощью пакетного скрипта?

Ответы [ 15 ]

2 голосов
/ 22 января 2019

Здесь мы немного похожи на гольф-код, но так как почти все ответы пока что bash (за исключением одного одиночного cmd), вот команда windows кроссплатформенная , которая использует powershell (потому что классный):

ls *.avi|%{ ffmpeg -i $_ <ffmpeg options here> $_.name.replace($_.extension, ".mp4")}

Вы можете изменить * .avi на любой материал, который соответствует исходному материалу.

2 голосов
/ 13 мая 2016
for i in *.flac;
  do name=`echo "${i%.*}"`;
  echo $name;
  ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3;
done

Пакетная обработка flac файлов в mp3 (безопасно для имен файлов с пробелами) с использованием [1] [2]

1 голос
/ 21 мая 2019

Для Windows:

Здесь я конвертирую все файлы (.mp4) в файлы (.mp3).
Просто откройте cmd, перейдите в нужную папку и введите команду.

Ярлык: (необязательно)
1. Перейдите в папку, где находятся ваши (.mp4) файлы
2. Нажмите Shift и щелкните левой кнопкой мыши и выберите «Открыть окно PowerShell здесь»
или «Открыть окно командной строки здесь»
3. Введите «cmd» [ПРИМЕЧАНИЕ. Пропустите этот шаг, если он непосредственно открывает cmd вместо PowerShell]
4. Запустите команду

for %i in (*.mp4) do ffmpeg -i "%i" "%~ni.mp3"
0 голосов
/ 27 ноября 2018

Еще одним простым решением, которое еще не было предложено, было бы использование xargs:

ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"

Одна небольшая ошибка - неудобное именование выходных файлов (например, input.avi.mp4). Возможный обходной путь для этого может быть:

ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4" "

0 голосов
/ 07 ноября 2017

маленький скрипт php для этого:

#!/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' ) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...