Добавить обложку альбома в файл mp3 / ogg из командной строки в пакетном режиме?

Я ищу программное обеспечение в Linux, которое добавит альбом-искусство / обложку для каждого из выбранных файлов в пакетном режиме. Обложка альбома – jpg / png, хранящаяся на моем компьютере. Это будет потрясающе, если он сможет импортировать из Интернета.

В настоящее время я пробовал как Rhythmbox, так и Banshee. Я также пробовал lame и easytag , но кажется, что они не поддерживают пакетный режим. lame не добавляет свойства, а перезаписывает. (Я знаю, что lame – единственная командная строка s / wi, которая использовалась до сих пор).

Итак, в основном я ищу:

 <some magic s/w> --picture=<my chosen picture> Music/Artist/*.mp3 

Это добавит изображение в метаданные файла, навсегда.

Можете ли вы предложить мне такое программное обеспечение?

5 Solutions collect form web for “Добавить обложку альбома в файл mp3 / ogg из командной строки в пакетном режиме?”

ламе

Используя lame вы можете сделать это, используя небольшой скрипт:

 $ lame --ti /path/to/file.jpg audio.mp3 

Если файлы называются примерно так, вы можете сделать сценарий оболочки, чтобы сделать то, что вы хотите:

 for i in file1.mp3 file2.mp3 file3.mp3; do albart=$(echo $i | sed 's/.mp3/.jpg/') lame --ti /path/to/$albart $i done 

Вы можете сделать выше немного более компактным и исключить необходимость sed , используя bash чтобы сделать это, удалив соответствующий суффикс:

 ... albart="${i%.mp3}.jpg" ... 

Пикард / MusicBrainz

Если вы хотите сделать это в больших масштабах, я бы предложил использовать Picard, который является интерфейсом для использования базы данных MusicBrainz. В Picard есть плагин под названием «Cover Art Downloader», который может сделать это для партий вашей коллекции.

  • MusicBrainz
  • Picard
  • Плагины Picard

Однако указанное выше не является командной строкой.

свекла

Другой вариант – использовать beets . Это можно запустить из командной строки и использовать базу данных MusicBrainz для поиска обложек альбомов.

Вы можете либо использовать обложку альбома, используя FetchArt Plugin, либо встроить его с помощью плагина EmbedArt .

Другие варианты?

Также взгляните на это ранее заданное U & L Q & A под названием « Какой инструмент для тегов mp3 для Linux? , В этом потоке есть несколько альтернативных инструментов.

Одним из решений было бы использовать ffmpeg:

 ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3 

Вы можете поместить это в цикл for, чтобы делать каждый MP3 в каталоге:

 for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}"; done 

Это создаст отдельный выходной файл (так что если у вас есть файл с именем foo.mp3 , вы получите как foo.mp3 и out-foo.mp3 ); это связано с тем, что ffmpeg не может писать поверх своего ввода. Вы можете исправить это с помощью чего-то вроде:

 for f in ./*.mp3; do \ ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}" \ && mv out-"${f#./}" "$f"; done 

Использование ffmpeg для этой проблемы немного напоминает использование крылатой ракеты для взлома гайки. Более специализированные инструменты для обработки метаданных, безусловно, смогут сделать это в более чистой и более короткой команде.

Для этого вы можете использовать драгоценный камень FancyAudio . Он может добавлять обложки альбомов в mp3-файлы. Документация доступна здесь .

функции

  1. добавить обложку альбома в один mp3-файл
  2. добавьте обложку альбома в несколько mp3-файлов.

Ниже экрана показан вывод fancy_audio при запуске в папке, содержащей изображение и несколько mp3-файлов

введите описание изображения здесь

Ниже экрана показан вывод fancy_audio при запуске в папке, содержащей файлы mp3 и изображений

На этом изображении показан вывод fancy_audio при запуске в папке, содержащей файлы mp3 и изображений

Для MP3:

 eyeD3 --add-image="cover.jpg":FRONT_COVER "file.mp3" 

Для FLAC:

 metaflac --import-picture-from="cover.jpg" "file.flac" 

OGG / Vorbis представляется более сложным .

OP утверждает, что он предпочел бы, если обложка будет загружена из Интернета, и я просто написал довольно хороший сценарий для этого, используя eye3D и sacad , оба устанавливаемые из pip. eye3D очень полезен для этой цели, поскольку он, похоже, не перекодирует звук, а с помощью флага --to-v2.4 обрабатываются любые mp3-файлы, независимо от типа тега id3. Сценарий должен быть запущен из каталога, содержащего mp3-файлы. Его можно запускать без аргументов, угадывая имя исполнителя и альбома из тегов id3 или с именами вручную в качестве аргументов, например, embedart "pink floyd" "dark side of the moon" . Это написано для оболочки рыбы, но должно быть легко переносимым для bash, если вы измените все команды set на настройки bash.

 function embedart if echo $argv | grep -q -e '-h' echo 'embedart "[Artist]" "[Album]"' return end if test $argv[1] set artist $argv[1] set album $argv[2] else set artist (eyed3 (ls *mp3 | head -1) | ggrep -oP "artist.*: \K.*" | head -1) if not test $artist echo "No artist found!" return end set album (eyed3 (ls *mp3 | head -1) | ggrep -oP "album.*: \K.*" | head -1) if not test $album echo "No album found!" return end end sacad $artist $album 350 cover.jpg -v warning 2> /dev/null > /dev/null eyeD3 --to-v2.4 --add-image "cover.jpg:FRONT_COVER" *mp3 -Q 2> /dev/null > /dev/null rm cover.jpg echo "Done!" end 
  • Добавление файлов в .tar из каталога
  • Доступ к репозиторию git через ssh-config
  • Поиск слова из определенного файла словаря в sdcv (консольная версия словаря Stardict)
  • Как заставить пользователя нажать Enter для выхода в терминал, чтобы терминал не закрывался автоматически?
  • Как удалить папки, созданные с именами дат 2016-04-03 до 2016-10-4
  • Как выводить только имена файлов (с пробелами) в ls -Al?
  • PHP CLI и Bash - изменение поведения ключевого слова PHP
  • Лучший способ сбора случайной выборки из коллекции файлов
  • Повторное кодирование видео с помощью ffmpeg, включая все субтитры, но не все аудио
  • Что такое командные праймериз?
  • Подача звука с микрофона в питон
  • Linux и Unix - лучшая ОС в мире.