У меня есть папка с несколькими сотнями MP3-файлов, и я хочу вырезать два раздела из каждого файла. В каждом файле одинаковые места - от 0'00.00–0'03.81, а затем от 0'08.83–0'13.95.

Я на Windows 7, хотя я могу легко использовать 8 или 10, если это поможет. Не брезгливая работа в командной строке.

Есть идеи, как мне этого добиться?

1 ответ1

1

Итак, я понял, как это сделать с помощью ffmpeg. В случае, если кто-то еще задается вопросом в какой-то момент, вот как.

Кстати: это 216 файлов, все в одной папке, и часть имени файла представляет собой порядковый номер. Это немного облегчило цикл DOS.

Сначала я создал простой текстовый файл с именем temps.txt , в котором есть только две строки:

файл temp1.mp3
файл temp2.mp3

Вы увидите, что это за минуту.

Затем я написал командный файл, который перебирает все файлы в каталоге (на основе приведенной выше последовательной нумерации) и выполняет две операции ffmpeg для каждого:

FOR /L %% i IN (1,1216) DO (
  ffmpeg.exe -y -i OriginalFile %% i.mp3 -ss 00:03.81 -to 00:08.83 -акодек копия "temp1.mp3" -ss 00:13.95 -акодек копия "temp2.mp3"
  ffmpeg.exe -y -safe 0 -f concat -i temps.txt -c copy NewFile %% i.mp3
)

Первая операция захватывает два желаемых сегмента и копирует их в temp1.mp3 и temp2.mp3 (я продолжал использовать те же два имени файла). ffmpeg позволяет вам изолировать оба раздела в одной командной строке, что приятно. Кроме того, вы можете заметить, что вторая часть имеет только отметку времени -ss , а отметку -to нет. Это позволяет ему просто использовать конец файла в качестве второй метки времени.

Вторая операция указывает ffmpeg найти файл temps.txt и объединить два файла, которые там перечислены. Повторное использование имен временных файлов - вот почему у меня был только статический файл temps.txt, который я создал выше.

Я написал это прямо (жестко запрограммировав количество файлов в каталоге, повторно используя временные файлы, используя флаг -y в командной строке), потому что я точно знал, с чем мне нужно работать, и у меня была его резервная копия тем не мение. Если вы используете это заново, вы можете быть более деликатным в этих вещах.

Кроме того, я потерял все метаданные в этом процессе. Вероятно, есть простой способ сохранить это, но я не удосужился выяснить это. Достаточно легко для меня просто заново добавить его в новые файлы сразу (используя MP3Tag, одну из величайших утилит всех времен).

Итак, вот оно.

Кстати, некоторые ссылки, которые помогли мне понять это:

  • Я начал с ffmpeg - обрезать аудио файл без перекодирования
  • Затем, чтобы возиться со спецификой, на которую я ссылался ffmpeg Документация
  • Для конкатенации я получил много от этого ответа на вопрос переполнения стека. Вопрос был о видео, которое намного сложнее, но этот ответ сказал мне все, что мне нужно было знать и об аудио. В частности, я использовал второй метод, который описывает этот ответ.
  • И, наконец, я на самом деле не использовал его, но есть более полезная информация о команде concat в этой вики - включая инструкции по автоматической генерации файла списка в Windows или bash.

(Спасибо @barlop за предложение добавить их.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .