Aggiungere la copertina dell'album-album al file mp3 / ogg dalla riga di comando in modalità batch?


38

Sto cercando un software in Linux, che aggiungerà la copertina / copertina dell'album a ciascuno dei file selezionati in modalità batch. La copertina dell'album è un jpg / png memorizzato nel mio computer. Sarà fantastico se può importare da Internet.

Attualmente ho provato sia Rhythmbox che Banshee. Ho anche provato lamee easytag, ma sembra che non supportino la modalità batch. nonlame sta aggiungendo le proprietà, ma sovrascrivendo. (So ​​che lame è l' unica riga di comando che s / wi ha usato finora).

Quindi, sostanzialmente sto cercando:

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

Ciò aggiungerà l'immagine ai metadati del file, in modo permanente.

Puoi suggerirmi un software del genere?

Risposte:


24

noioso

Usando lamepuoi farlo usando un piccolo script:

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

Se i file hanno un nome simile a questo, puoi creare uno script shell per fare quello che vuoi:

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

Puoi rendere quanto sopra leggermente più compatto ed eliminare la necessità sedutilizzando bashper farlo rimuovendo il suffisso corrispondente:

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

Picard / MusicBrainz

Se vuoi farlo su larga scala, ti suggerisco di usare Picard, che è lo strumento frontend per l'utilizzo del database MusicBrainz. C'è un plug-in per Picard chiamato "Cover Art Downloader", che può fare questo per i lotti della tua collezione.

Quanto sopra non sembra essere guidato dalla riga di comando.

barbabietole

Un'altra opzione sarebbe quella di utilizzare beets. Questo può essere guidato dalla riga di comando e utilizza il database MusicBrainz per l'approvvigionamento della copertina dell'album.

Puoi creare la copertina dell'album utilizzando il plug-in FetchArt o incorporarla utilizzando il plug-in EmbedArt .

Altre opzioni?

Dai un'occhiata anche a questa domanda di domande e risposte precedentemente intitolata: quale strumento di tagging mp3 per Linux? . Esistono diversi strumenti alternativi elencati in questo thread.


Puoi evitare la sedchiamata con qualcosa del genere albart="${i%.mp3}.jpg". Ancora più importante, ho appena testato il tuo comando zoppo e ho lame: unrecognized option -i...
evilsoup

@evilsoup - grazie, allo switch mancava un trattino. Dovrebbe essere --ti ...
slm

@evilsoup - ha anche aggiunto il tuo feedback sul non utilizzo sed. Grazie!
slm

8
@ Exeleration-G - no che non consiglierei di usare lamepoiché in realtà è un encoder. Esistono altri strumenti per manipolare solo i tag id3 di un mp3. È possibile utilizzare id3v2 -r "APIC" *.mp3o eyeD3 --remove-all-images *.mp3per rimuovere qualsiasi immagine allegata.
slm

2
Cordiali saluti la mia versione 3.99 non ha un'opzione "--ti" (debian buster) - eyeD3 sembra essere una buona alternativa.
Benjamin Peter,

17

Una soluzione sarebbe usare ffmpeg:

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

Puoi metterlo in un ciclo for per fare ogni MP3 in una directory:

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

Questo creerà un file di output separato (quindi se hai un file chiamato foo.mp3, finirai con entrambi foo.mp3e out-foo.mp3); questo perché ffmpeg non può scrivere sul suo input. Puoi risolvere questo problema con qualcosa del tipo:

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

Usare ffmpeg per questo problema è un po 'come usare un missile da crociera per rompere un dado. Strumenti più specializzati per la manipolazione dei metadati saranno sicuramente in grado di farlo in un comando più pulito e più breve.


6
Il comando ffmpeg mostrato qui codificherà l'audio. Se stai convertendo da un altro formato, va bene, ma se vuoi solo aggiungere arte a un mp3 esistente senza ricodificarlo, aggiungi -acodec copydopo -map 1.
jsd

Questo non funziona per me, qualche motivo particolare? Ricevo solo il file mp3 ma nessuna miniatura. @jsd
Chef Faraone

Scusa @ChefPharaoh Non so perché non funzioni per te. Ho appena provato a fare wav-> mp3 mentre aggiungevo arte, e semplicemente aggiungevo arte a un mp3 esistente con quei comandi ffmpeg mostrati sopra. Entrambe le volte ha funzionato bene.
jsd

@evilsoup Non sono sicuro se sto facendo qualcosa di super male o sbagliato, ma sono in grado di modificare i miei file mp3 sul posto usando la sostituzione del processo. Kinda semplifica questo script e sembra essere super veloce.
rien333,

Ha funzionato come un piacere, e ho anche scoperto che ffmpeg è leggermente più veloce di zoppo :)
Tina

8

Per MP3:

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

Per FLAC:

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

OGG / Vorbis sembra essere più complicato .


5

Per questo puoi usare la gemma FancyAudio . Può aggiungere copertine degli album ai file mp3. La documentazione è disponibile qui .

Caratteristiche

  1. aggiungi la copertina dell'album a un singolo file mp3
  2. aggiungi le copertine degli album a più file mp3.

Sotto la schermata mostra l'output di fancy_audio quando eseguito in una cartella contenente un'immagine e più file mp3

inserisci qui la descrizione dell'immagine

La schermata seguente mostra l'output di fancy_audio quando eseguito in una cartella contenente file mp3 e di immagine

Questa immagine mostra l'output di fancy_audio quando eseguito in una cartella contenente file mp3 e di immagine


Questo è facile e funziona più velocemente rispetto lameall'aggiunta della stessa immagine a più file mp3. Non hai bisogno di conoscere Ruby;) - questo è uno script autonomo.
Tomasz Gandor,

0

OP afferma che preferirebbe che la copertina fosse scaricata dal web, e ho appena scritto uno script abbastanza buono per quello usando eye3De sacad, entrambi installabili da pip. eye3Dè molto utile a questo scopo in quanto non sembra ricodificare l'audio e l'utilizzo del --to-v2.4flag gestisce qualsiasi file mp3, indipendentemente dal tipo di tag id3. Lo script deve essere avviato dalla directory che contiene i file mp3. Può essere eseguito senza argomenti, indovinando l'artista e il nome dell'album dai tag id3 o con nomi manuali come argomenti, ad es embedart "pink floyd" "dark side of the moon". È scritto per il guscio di pesce, ma dovrebbe essere facilmente trasportabile se si cambiano tutti i comandi impostati in bash delle assegnazioni variabili.

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

-1

eyeD3 non funziona con Unicode . Se nel nome del file .mp3 sono presenti caratteri non ascii (o anche solo in un nome di directory dell'antenato, come la directory Album), si interrompe. LTA.

Quindi sei sfortunato se il titolo dell'album o della canzone non è scritto in inglese!

Per esempio:

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

Apparentemente eyeD3 vuole mettere il percorso completo del file .mp3 all'interno del file .mp3 e non può gestire caratteri non ascii.

Eccezione non rilevata: il codec 'ascii' non può codificare i caratteri nella posizione 5-16: ordinale non nell'intervallo (128)
eyed3: ERRORE: il codec 'ascii' non può codificare i caratteri nella posizione 5-16: ordinale non nell'intervallo (128)
Rintracciare 
... (lungo traceback omesso) ...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.