В течение долгого времени я использовал относительную неуклюжую технику, которая включает Audacity с плагином LAME. Это хорошо, я думаю, но привлекательность терминального подхода заключается в том, что я могу быть немного лучше с моими [options]
и, возможно, использовать более современные двоичные файлы.
Кроме того, мой MacBook немного устарел, и если я смогу избавиться от ненужного графического интерфейса, тем лучше.
Заранее спасибо.
Ответы:
Преобразование одного файла без сохранения тегов
--decode --stdout
знак равно-dc
lame - $outfile
= вход от STDIN--preset extreme
= ~ 245 кбит / с VBRСценарий оболочки, который сохраняет некоторые теги ID3
Чтобы использовать скрипт, просто сохраните его где-нибудь как
~/bin/flac2mp3
и сделайте его исполняемымchmod +x ~/bin/flac2mp3
.Это преобразовало бы все файлы flac в вашей папке Music:
Или немного быстрее, так как он вызывает flac2mp3 только один раз:
источник
${file%.flac}.mp3
является удивительным! Ранее я использовал${x:: ${#x}-3}m4a
для того, чтобы изменить имя файла песни с .wav на .m4a. Удивительно видеть способ, который выглядит немного проще.!/bin/sh file="$1" outfile=${file%.flac}.mp3 eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/") flac -cd "$file" | lame --preset standard \ --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \ --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \ - "$outfile"
ffmpeg сохранит теги (но не обложку) по умолчанию.
-aq 1
соответствует-V 1
в хромой.-acodec libfaac
конвертирует файлы в AAC:источник
Я взял то, что у вас было, ребята, но затем заставил его работать еще быстрее, используя
xargs
распараллеливание заданий.Тогда это скрипт сверху / usr / local / bin / flac2mp3
и вот некоторые статистические данные для повышения производительности с использованием параллелизма.
Вы можете видеть, что он также использовал мои процессоры более эффективно, у меня есть Intel i7, так что 8, вероятно, правильное количество процессов.
источник
Нашел эту ветку при попытке сделать прямое кодирование MP3 из исходных файлов FLAC. Ответ Boehj обеспечивает хороший сценарий, но я лично предпочитаю использовать FFmpeg, так что это сценарий Bash, который я придумал для выполнения этой задачи. Протестировано и прекрасно работает в macOS Sierra (10.12.2).
Преимущества: Вы должны иметь
ffmpeg
иlame
уже установлены на вашем Mac. Самый простой способ сделать это через Homebrew. Сначала убедитесь, что Homebrew установлен следующим образом:Затем запустите эту команду для установки
ffmpeg
иlame
:Как только это будет сделано, вы готовы запустить этот скрипт. Этот сценарий будет искать файлы FLAC в каталоге,
path/to/FLAC/files
но это можно изменить, просто.
указав, что файлы FLAC находятся в том же каталоге, в котором вы запускаете этот сценарий. При запуске он создастmp3/
подкаталог, в котором будут находиться все файлы MP3. размещены.Некоторые заметки о том, что я выучил «The Hard Way ™», чтобы другие могли извлечь выгоду из того, что я сделал по-другому в этом сценарии, по сравнению с другими в Интернете.
grep
команды для тега синтаксического анализа ( с использованием FFprobe , который установлен с FFmpeg) нечувствительны к регистру , используя-i
опцию , чтобы сделать этоgrep -i
.cut
команда теперь ограничена разделением вывода только на основе первого=
в имени тега с-f 2-
опцией, которая делает командуcut -d '=' -f 2-
. Например, у Pavement есть песня под названием «5-4 = Unity», и если бы только второй фрагмент был выбран посредством вырезания, этот заголовок был бы обрезан до «5-4».sed
которая избавляется от ведущих нулей:sed 's/^0*//'
.-f wav
и это фактически сжимает вывод FFmpeg, что не имеет смысла в настройке канала, где LAME собирается перекодировать его. Вместо этого здесь устанавливается выход,-f s16le -acodec pcm_s16le
который в основном является выходом RAW; идеально подходит для передачи звука в другой процесс, как этот.-r
опцию.--tt
,--ta
,--tl
,--tn
и--tg
варианты тегов ID3v2 для LAME. Когда аудио передается / передается из одного процесса в LAME, метаданные из исходного файла теряются. Один из предложенных вариантов, чтобы получить FFmpeg сохранить метаданные в текстовый файл, установив параметр с ,-f ffmetadata "[metadata filename here]"
а затем снова запустить FFmpeg с чем - то вроде этого:-i "[metadata filename here]" -map_metadata 1 -c:a copy [destination mp3 file] id3v2_version 3 -write_id3v1 1
. Это работает, но обратите внимание на требование к файлу назначения. Похоже, FFmpeg импортирует метаданные только тогда, когда он может скопировать файл, что кажется очень расточительным процессом. Использование FFprobe для получения значений , а затем устанавливать их в LAME с--tt
,--ta
,--tl
,--tn
и--tg
варианты работы лучше; все метаданные записаны на месте, поэтому необходимо создать дубликат файла.источник