Как я могу обрезать доли секунды от начала уже закодированного файла MP3, не перекодируя MP3 снова?

387
JakeGould

Я использую macOS 10.3.6 (High Sierra), и некоторое время назад у меня было 4 набора компакт-дисков с музыкой, я записывал треки в MP3 и просто сохранял файлы в своей системе. Мне пришлось вручную пометить и добавить метаданные к каждому из 100+ треков (не спрашивай), и некоторое время назад я также избавился от оригинальных компакт-дисков (тоже не спрашивай), так что я не могу легко перезаписать их.

Так вот в чем проблема : очевидно, инструмент MP3, который я использовал в то время, добавлял доли секунды «трещотки» к началу каждой дорожки. Я не знал - или не обращал внимания - в то время, но каждый из 100+ треков имеет эту раздражающую популярность прямо в начале трека.

Я читал эту ветку о переполнении стека: « Звук щелчка в начале при использовании LAME », и хотя этот совет твердый - объясняет, как иногда LAME может случайно кодировать заголовок аудиофайла как чистый звук - реальность такова, что представленные решения заставят меня Поток уже закодированный MP3 через что-то вроде, fseekа затем перекодировать MP3 (иначе: перекодировать его), что далеко от идеала.

Так есть ли какой-нибудь способ, которым я мог бы урезать приблизительно 1/8 секунды от этих уже закодированных MP3, чтобы избавиться от «pop» и избежать перекодирования MP3?

Я специально ищу относительно простое решение на основе macOS, которое, самое большее, потребует установки нового инструмента (если требуется) через Homebrew. Не просить полный сценарий, но по крайней мере инструмент и подсказку конфигурации, чтобы указать мне в правильном направлении.

1

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

2
JakeGould

Итак, мне удалось решить эту проблему, используя магию FFmpeg (которую я уже установил на macOS через Homebrew). В частности, параметр -ss(он же ищет) в сочетании с copyопцией, применяемой к аудиопотоку, работает как шарм! Команда может быть преобразована в это:

ffmpeg -ss 0.125 -i "input.mp3" -acodec copy "output.mp3" 

Установка -ssto, 0.125а затем простое указание ввода и вывода с copyустановкой в ​​the -acodecis все, что нужно сделать.

И поскольку - как объяснено в вопросе - в моем случае у меня есть более 100 файлов для работы, я создал простой сценарий Bash, который найдет все MP3-файлы, которые должны обрезать 1/8 открываемого аудио, и выгрузит их в mp3/подкаталог. Надеюсь, это поможет кому-то в подобной ситуации!

find -E "path/to/audio/files" -type f -iregex ".*\.(MP3)$" |\ while read full_audio_filepath do  # Break up the full audio filepath stuff into different directory and filename components. audio_dirname=$(dirname "$"); audio_basename=$(basename "$"); audio_filename="$";  # Set the MP3 directory. mp3_dirpath="$/mp3"; mp3_filepath="$/$.mp3";  # Create the child MP3 directory. mkdir -p "$";  # And here is where the magic happens. ffmpeg -y -v quiet -ss 0.125 -i "$full_audio_filepath" -acodec copy "$mp3_filepath" < /dev/null;  done 
Вы могли бы упростить это (и значительно ускорить!), Используя GNU «параллельный» и рекурсивное сглаживание с помощью Bash, т.е. запустите `shopt -s globstar` и затем` параллельный 'ffmpeg -i {}… {//} / mp3 / {/} '::: ** / *. mp3`. Смотрите [`параллель` учебник] (https://www.gnu.org/software/parallel/parallel_tutorial.html), чтобы узнать, что означают эти строки замены (например,` {//} `). Используйте параметр `--dry-run` для` parallel`, чтобы показать, что он будет запускать. slhck 5 лет назад 0
@slhck Хороший совет! Если честно, этот процесс был достаточно быстрым для моих нужд. Тем не менее, я уточню, что я нахожусь на macOS 10.33.6 (High Sierra), но призываю вас опубликовать свой вариант ответа, используя `parallel`. JakeGould 5 лет назад 0
Правда, этот процесс связан с вводом / выводом, поскольку он ничего не кодирует. Я не хотел публиковать отдельный ответ, так как суть вопроса о ffmpeg, а не о пакетной обработке. PS: под macOS вы можете легко установить GNU параллельно через Homebrew (`brew install parallel`). slhck 5 лет назад 1
@slhck Спасибо за совет! Будем расследовать. JakeGould 5 лет назад 0

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