it-swarm.com.de

Albumcover zur MP3 / Ogg-Datei über die Befehlszeile im Batch-Modus hinzufügen?

Ich suche eine Software unter Linux, die das Albumcover/Cover zu jeder der ausgewählten Dateien im Batch-Modus hinzufügt. Das Albumcover ist ein JPG/PNG, das auf meinem Computer gespeichert ist. Es wird großartig sein, wenn es aus dem Internet importiert werden kann.

Derzeit habe ich sowohl Rhythmbox als auch Banshee ausprobiert. Ich habe auch lame und easytag ausprobiert, aber anscheinend unterstützen sie den Batch-Modus nicht. lame ist nicht Hinzufügen der Eigenschaften, aber Überschreiben. (Ich weiß, lahm ist die nur Befehlszeile s/w, die ich bisher verwendet habe).

Im Grunde suche ich also:

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

Dadurch wird das Bild dauerhaft zu den Metadaten der Datei hinzugefügt.

Können Sie mir eine solche Software vorschlagen?

39
BaRud

lame

Mit lame können Sie dies mit ein wenig Skript tun:

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

Wenn die Dateien ungefähr so ​​heißen, können Sie ein Shell-Skript erstellen, um das zu tun, was Sie wollen:

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

Sie können das Obige etwas kompakter gestalten und die Notwendigkeit von sed beseitigen, indem Sie bash verwenden, indem Sie das passende Suffix entfernen lassen:

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

Picard/MusicBrainz

Wenn Sie dies in großem Maßstab tun möchten, würde ich die Verwendung von Picard empfehlen, dem Frontend-Tool für die Verwendung der MusicBrainz-Datenbank. Zu Picard gibt es ein Plugin namens "Cover Art Downloader", mit dem Sie Stapel Ihrer Sammlung bearbeiten können.

Das Obige scheint jedoch nicht befehlszeilengesteuert zu sein.

rüben

Eine andere Option wäre die Verwendung von beets. Dies kann über die Befehlszeile gesteuert werden und verwendet die MusicBrainz-Datenbank für die Beschaffung des Albumcovers.

Sie können das Albumcover entweder mit FetchArt Plugin erstellen oder mit EmbedArt Plugin einbetten.

Andere Optionen?

Schauen Sie sich auch diese zuvor gestellten Fragen und Antworten zu U & L mit dem Titel an: Welches MP3-Tagging-Tool für Linux? . In diesem Thread sind mehrere alternative Tools aufgeführt.

25
slm

Eine Lösung wäre die Verwendung von ffmpeg:

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

Sie können dies in eine for-Schleife einfügen, um alle MP3s in einem Verzeichnis auszuführen:

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

Dadurch wird eine separate Ausgabedatei erstellt (wenn Sie also eine Datei mit dem Namen foo.mp3 Haben, erhalten Sie sowohl foo.mp3 Als auch out-foo.mp3). Dies liegt daran, dass ffmpeg nicht über seine Eingabe schreiben kann. Sie können dies mit folgenden Problemen beheben:

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

Die Verwendung von ffmpeg für dieses Problem ähnelt der Verwendung einer Marschflugkörper zum Knacken einer Nuss. Speziellere Tools zur Bearbeitung von Metadaten können dies sicherlich in einem saubereren und kürzeren Befehl tun.

17
evilsoup

Für MP3:

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

Für FLAC:

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

OGG/Vorbis scheint komplizierter zu sein.

10
Raphael

Sie können dafür FancyAudio gem verwenden. Es kann MP3-Dateien Albumcover hinzufügen. Dokumentation ist verfügbar hier .

Funktionen

  1. albumcover zu einer einzelnen MP3-Datei hinzufügen
  2. hinzufügen von Albumcover zu mehreren MP3-Dateien.

Der folgende Screenshot zeigt die Ausgabe von fantas_audio, wenn es in einem Ordner ausgeführt wird, der ein Bild und mehrere MP3-Dateien enthält

(enter image description here

Der folgende Screenshot zeigt die Ausgabe von fantas_audio, wenn es in einem Ordner ausgeführt wird, der MP3- und Bilddateien enthält

(This image shows the output of fancy_audio when run in a folder containing mp3 and image files

5
Ajit Singh

Verwenden Sie mid3v2 aus Mutagen:

mid3v2 -p <image> <mp3>

Wenn Sie lame oder ffmpeg verwenden, wird die MP3-Datei neu codiert, anstatt nur das Bild als Meta-Blob hinzuzufügen. Und die Benutzeroberfläche ist keine Befehlszeile.

0
motzmann

OP gibt an, dass er es vorziehen würde, wenn das Cover aus dem Internet heruntergeladen wird, und ich habe gerade ein ziemlich gutes Skript dafür mit eye3D Und sacad geschrieben, die beide von pip installiert werden können. eye3D Ist für diesen Zweck sehr nützlich, da es Audio nicht neu zu codieren scheint und die Verwendung des Flags --to-v2.4 Alle MP3-Dateien verarbeitet, unabhängig vom Typ des ID3-Tags. Das Skript sollte aus dem Verzeichnis gestartet werden, das die MP3-Dateien enthält. Es kann ohne Argumente ausgeführt werden, wobei der Name des Interpreten und des Albums aus den id3-Tags erraten wird, oder mit manuellen Namen als Argumente, z. embedart "pink floyd" "dark side of the moon". Es ist für die Fisch-Shell geschrieben, sollte aber leicht zu Bash portierbar sein, wenn Sie alle gesetzten Befehle in Bash-Variablenzuweisungen ändern.

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
0
rien333

eyeD3 funktioniert nicht mit Unicode. Wenn sich Nicht-ASCII-Zeichen im MP3-Dateinamen befinden (oder sogar nur in einem Vorgängerverzeichnisnamen, z. B. dem Albumverzeichnis), wird der Vorgang abgebrochen. LTA.

Sie haben also kein Glück, wenn der Album- oder Songtitel nicht auf Englisch geschrieben ist!

Zum Beispiel:

cp yoursong.mp3 /tmp/Странджанска.mp3
eyeD3 --add-image folder.jpg:FRONT_COVER Странджанска.mp3

Anscheinend möchte eyeD3 den vollständigen Pfad der MP3-Datei in die MP3-Datei einfügen und kann keine Nicht-ASCII-Zeichen verarbeiten.

 Nicht erfasste Ausnahme: Der Codec 'ascii' kann keine Zeichen an Position 5-16 codieren: Ordnungszahl nicht im Bereich (128) 
 Eyed3: FEHLER: Der Codec 'ascii' kann keine Zeichen an Position codieren 5-16: Ordnungszahl nicht im Bereich (128) 
 Rückverfolgung 
 ... (lange Rückverfolgung weggelassen) ... 
0
Jim Avera