Вырежьте два раздела из пакета файлов MP3

268
spoko

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

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

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

0
Я видел программу под названием mp3splt. использование командной строки is- mp3splt song.mp3 10.12 14.25 -o out.mp3 (разбить song.mp3, начиная с 10 минут 12 секунд, заканчивая 14 минутами 25 секунд, и сохранить фрагмент mp3 в новом файле с именем out.mp3) "(https: // superuser.com/questions/277678/how-to-cut-a-few-seconds-out-of-movie-file (как написано в моем комментарии к этому вопросу) Так что если вам удастся попробовать это на одном файле, вопрос просто в том, как применить это к пакету файлов. И способ, которым я бы это сделал, это `dir / s / b * .mp3> filelist.txt` barlop 6 лет назад 0
Затем (скорее как древний отскок от техники командной строки, но без отказов от командной строки), я бы использовал некоторый текстовый редактор, который поддерживает регулярные выражения для преобразования этих имен файлов в нужную вам команду. например, добавление в начало и конец каждой строки, чтобы каждая строка была командой для этого файла. А затем переименуйте файл как bat и выполните его. Другой вариант для / f, который выдает список файлов и позволяет генерировать каждую команду. Но сначала попробуйте шаг 1, это mp3splt для одного файла. barlop 6 лет назад 0
Я вижу, как бы я использовал это, чтобы вырезать первый раздел. Но как бы я использовал его для второго, где я делю файл на разделы и просто удаляю второй? Команда, которую вы дали, похоже, хочет вырезать фрагмент и оставить только его, а не вырезать фрагмент и удалить его. Я посмотрел на странице man для mp3splt, и я не вижу, что мне нужно. spoko 6 лет назад 0
Я полагаю, что разделив файл, вы можете собрать его обратно без частей, которые вам не нужны. https://askubuntu.com/questions/20507/concatenating-several-mp3-files-into-one-mp3 и https://stackoverflow.com/questions/62618/what-is-the-best-way-to- слияния-mp3-файлы barlop 6 лет назад 0
есть также ffmpeg, но иногда, когда вы не уверены, какие именно параметры передать ему, это может быть сложнее, чем обычно! https://stackoverflow.com/questions/43728169/how-to-remove-a-section-from-an-audio-and-keep-the-rest-with-ffmpeg barlop 6 лет назад 1
@barlop __ffmpeg__ оказался подходящим инструментом для работы, но я не использовал метод, описанный в ответе, на который вы ссылались. Этот метод означает перекодирование, и я хотел избежать этого. Нашел немного хитрый способ сделать это, описанный в моем ответе ниже. spoko 6 лет назад 0

1 ответ на вопрос

1
spoko

Итак, я понял, как это сделать с помощью 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 -00: 08,83 -акодек копия "temp1.mp3" -ss 00: 13,95 -acodec copy "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 за предложение добавить их.)

Впечатляет ... кстати, если вы нашли какие-то конкретные ссылки, полезные для получения этого ответа, то стоит включить их barlop 6 лет назад 0

Похожие вопросы