Масса .flac-> .mp3 транскодирование: Как записать сценарий оболочки, который сохраняет данные меток ID3?

Я удивлен видеть, что никто не предложил history -c сразу до exit. IINM (я не эксперт), который сделает приятно.

9
13.04.2017, 15:45
3 ответа
#!/bin/sh

file="$1"
outfile=${file%.flac}.mp3

eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/")

flac -cd "$file" | lame --preset fast extreme \
        --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \
        --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \
        - "$outfile"
7
27.01.2020, 20:07
  • 1
    Спасибо Kambus! Это в значительной степени добивается цели. Большинство тегов, которые я хочу, теперь там, посттранскод: Заголовок, Альбом, Художник, год, Номер дорожки. Поле CD (1/1, 1/2, и т.д.) не сделало его через, и ни у одного нет поля для 'Номера дорожки'. Но это действительно не беспокоит меня. Интересно я попробовал этот сценарий на каталоге, содержащем 'трип-хоп' музыку. Теги были сохранены в такте, но сценарий изменил Жанр от 'трип-хопа' до 'трип-хопа'. Таким образом, я предполагаю, что это полагается на базу данных известных жанров там. Спасибо очень еще раз за Ваш вход! –  boehj 28.03.2011, 01:28
  • 2
    @pedrogent: я рад, что мог помочь! Можно проверить вручную, что является другими тегами с "metaflac - export-tags-to - файл" и использует их тот же путь в качестве $TITLE и других, но проблема нет никаких эквивалентных полей для них в id3 AFAIK. Возможно, можно поместить их в тег комментария. Да, существует предопределенный список жанров: ссылка –  Kambus 28.03.2011, 12:17
  • 3
    Привет Kambus. Да я думаю, что часть проблемы здесь - то, что нет никакого четкого 'стандарта' для данных тега ID3. Тег комментария интерпретируется совершенно по-другому по сравнению с плеером плееру (или нисколько). Ваш сценарий является потрясающим. Еще раз спасибо. –  boehj 29.03.2011, 11:43

Как использовать mp3fs для массы, кодируют flac к mp3

Вместо того, чтобы использовать программу для преобразования flac файлов в mp3 можно использовать mp3fs для представления их как виртуальный mp3, и программа, которая может поставить задания копии в очередь. Это работает замечательно хорошо на меня.

Загрузите и установите mp3fs и ультракопировальное устройство:

sudo apt-get install mp3fs ultracopier

Создайте пару flac и mp3 каталогов для каждого mp3fs, который Вы хотите выполнить. У меня есть двухъядерный CPU, таким образом, я работаю два. Если Вы сохраняете flac каталоги на разделе, где Ваши flac файлы, можно быстро переместить их. Тот раздел называют "устройством хранения данных" в моей системе.

cd /media/Storage
mkdir mp3fs mp3fs/flac_1 mp3fs/mp3_1 mp3fs/flac_2 mp3fs/mp3_2

Можно смонтировать каталоги из командной строки или путем добавления их к /etc/fstab. Можно также настроить скорость передачи и алгоритм кодирования виртуального mp3 во время монтирования. Я хочу mp3 с постоянной скоростью передачи 320 Кбит/с, и Ламе может взять все время, он должен произвести лучший mp3, он возможно может.

На командной строке:

mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 -o allow_other,ro
mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 -o allow_other,ro

Если предохранитель жалуется, как

fusermount: не удалось открыть/etc/fuse.conf: Разрешение отклонено
fusermount: опция allow_other только позволила, если 'user_allow_other' установлен в etc/fuse.conf

затем не прокомментируйте user_allow_other опция в /etc/fuse.conf, и/или сделайте это читаемым с

sudo chmod 644 /etc/fuse.conf

Или от /etc/fstab:

mp3fs#/media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 fuse user,ro,allow_other,bitrate=320,quality=0 0 0
mp3fs#/media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 fuse user,ro,allow_other,bitrate=320,quality=0 0 0

После добавления каталогов к /etc/fstab, можно смонтировать их при помощи

sudo mount -a

Готово! Запустите ультракопировальное устройство. Это поместит значок индикатора в Вашу панель гнома или независимо от того, что случается так, что Вы используете. Нажмите его, выбор добавляют копию. Я сделал это дважды для использования двух ядер. Используйте свой файловый браузер для перемещения некоторых агентов по печати в flac_1. Перейдите к mp3_1 каталогу и перетащите свой mp3 к одному из окон ультракопировального устройства для запуска очереди копии. Ultracopier попросит место назначения файлов. У Вас теперь есть одно базовое занятое кодирование пакета агентов по печати к mp3.

Для использования другого ядра переместите flac файлы в flac_2 и перетащите mp3 от mp3_2 до второго окна ультракопировального устройства.

Обновление: Вместо ультракопировального устройства я теперь использую MiniCopier, немного легче использовать. См. комментарии ниже.

1
27.01.2020, 20:07
  • 1
    Кажется, существует ошибка со списком каталогов с последними версиями mp3fs и предохранителя: sourceforge.net/tracker / … –  Ophidian 18.11.2011, 18:58
  • 2
    @Ophidian: Интересный. Я запустил некоторые тесты на некоторых машинах с помощью различных дистрибутивов. У меня были они выполнение, в течение минуты каждый, без любых ошибок. mp3fs версия, которую я использовал, является тем же, 0.30. Я использовал ядра 2.3.38, 2.3.39, и 3.0.0, libfuse версии 2.8.4 и 2.8.6. Libfuse, упомянутый в отчетах об ошибках, 2.8.5. Этого совсем не достаточно, чтобы прийти к заключению, что предохранитель является преступником, однако, могло бы стоить попробовать другую версию при столкновении с проблемами при использовании 2.8.5. Вы, возможно, пробовали mp3fs? На котором ядре и с который libfuse? Вы встречались с какими-либо проблемами? –  Arjan Drieman 19.11.2011, 21:23
  • 3
    Вместо ультракопировального устройства я теперь использую MiniCopier, немного легче использовать. Это - приложение Java, это не требует никакой установки, но действительно нуждается в JRE. Это имеет значок корзины и значок поля. Можно перетащить один или несколько источников из файлового менеджера на значок корзины, целевого каталога на значок поля, и это - все, что необходимо сделать, чтобы добавить задание копии к очереди. MiniCopier имеет отдельную вкладку для неудавшихся объектов. MiniCopier использует меньше циклов CPU, чем ультракопировальное устройство, 1% по сравнению с 3% в моей системе. Это могло бы просто сохранить 12 минут на 10-часовой очереди ;-) –  Arjan Drieman 19.11.2011, 21:25
  • 4
    , Если Вы хотите основанную на оболочке очередь копии, я нашел решение в суперпользователе. Без корректировок Вы не сможете выполнить 2 очереди с ним, и я не уверен, что это сделает с ошибками. –  Arjan Drieman 19.11.2011, 21:27

id3cp не может работать, так как FLAC не использует ID3; вместо него используются теги Vorbis.

avconv имеет возможность поддерживать теги путем преобразования. Это своего рода каприз, его значение зависит от комбинации кодеков, но в вашем случае он работает так (версия 9.16-6):

avconv -i in.flac -map_metadata 0:g:0 out.mp3

Применить все FLAC-файлы в папке (рекурсивно) так же просто, как и это: (используя bash)

for f in */**/*.flac; do
  avconv -i "${f}" -map_metadata 0:g:0 "`echo "${f}" | sed -e s/flac$/mp3/`";
done

Обратите внимание, что avconv использует lame автоматически; существуют дополнительные опции для контроля качества и прочее. Для получения более подробной информации проверьте man avconv.

0
27.01.2020, 20:07

Теги

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