बैच मोड में कमांड-लाइन से एमपी 3 / ओग फ़ाइल में एल्बम-कला कवर जोड़ें?


38

मैं लिनक्स में एक सॉफ्टवेयर की तलाश कर रहा हूं, जो बैच-मोड में प्रत्येक चयनित फ़ाइल में एल्बम-आर्ट / कवर जोड़ देगा। एल्बम कला एक jpg / png है जो मेरे कंप्यूटर में संग्रहीत है। यह भयानक होगा अगर यह इंटरनेट से आयात कर सकता है।

वर्तमान में मैंने रिदमबॉक्स और बंशी दोनों की कोशिश की है। मैंने भी कोशिश की है lameऔर easytag, लेकिन लगता है कि वे बैच मोड का समर्थन नहीं करते हैं। गुणों lameको नहीं जोड़ रहा है, लेकिन ओवरराइटिंग। (मुझे पता है कि लंगड़ा एकमात्र कमांड लाइन है / वाई ने अब तक उपयोग किया है)।

इसलिए, मूल रूप से मैं देख रहा हूँ:

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

वह चित्र को फ़ाइल के मेटाडेटा में स्थायी रूप से जोड़ देगा।

क्या आप मुझे ऐसा कोई सॉफ्टवेयर सुझा सकते हैं?

जवाबों:


24

लंगड़ा

इसका उपयोग 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"
...

पिकार्ड / म्यूज़िक

यदि आप इसे बड़े पैमाने पर करना चाहते हैं तो मैं Picard का उपयोग करने का सुझाव दूंगा जो कि MusicBrainz डेटाबेस का उपयोग करने के लिए फ्रंटएंड टूल है। Picard के लिए एक प्लगइन है, जिसे "कवर आर्ट डाउनलोडर" कहा जाता है, जो आपके संग्रह के बैचों के लिए ऐसा कर सकता है।

हालाँकि, ऊपर से कमांड लाइन संचालित नहीं होती है।

बीट

एक अन्य विकल्प का उपयोग करना होगा beets। यह कमांड-लाइन से संचालित किया जा सकता है और एल्बम आर्ट सोर्सिंग के लिए MusicBrainz डेटाबेस का उपयोग करता है।

आप या तो एल्बम कला स्रोत का उपयोग कर सकते हैं FetchArt प्लगइन या का उपयोग कर इसे एम्बेड EmbedArt प्लगइन

अन्य विकल्प?

इसके अलावा पहले पूछे गए U & L Q & A शीर्षक पर एक नज़र डालें: लिनक्स के लिए कौन सा एमपी टैगिंग टूल? । इस धागे में कई वैकल्पिक उपकरण सूचीबद्ध हैं।


आप sedकॉल को कुछ इस तरह से टाल सकते हैं albart="${i%.mp3}.jpg"। इससे भी महत्वपूर्ण बात, मैंने सिर्फ आपके लंगड़े कमांड का परीक्षण किया और lame: unrecognized option -i...
23

@evilsoup - धन्यवाद, स्विच एक डैश गायब था। होना चाहिए --ti ..
स्लम

@evilsoup - का उपयोग नहीं करने पर अपनी प्रतिक्रिया भी जोड़ी sed। धन्यवाद!
स्लम

7
@ Exeleration- जी - नहीं, मैं lameइसका उपयोग करने की सिफारिश नहीं करूंगा क्योंकि यह वास्तव में एक एनकोडर है। एक एमपी 3 के id3 टैग में हेरफेर करने के लिए अन्य उपकरण हैं। आप किसी भी संलग्न चित्रों को उपयोग id3v2 -r "APIC" *.mp3या eyeD3 --remove-all-images *.mp3निकाल सकते हैं ।
slm

1
FYI करें मेरे संस्करण 3.99 में "--ti" विकल्प (डेबियन बस्टर) नहीं है - eyeD3 एक अच्छा विकल्प लगता है।
बेंजामिन पीटर

17

एक समाधान ffmpeg का उपयोग करना होगा:

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

आप इसे हर एमपी 3 में एक डायरेक्टरी में करने के लिए लूप में रख सकते हैं:

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 का उपयोग करना एक नट को दरार करने के लिए क्रूज मिसाइल का उपयोग करने जैसा है। अधिक विशिष्ट मेटाडेटा-जोड़-तोड़ उपकरण निश्चित रूप से एक क्लीनर, छोटे कमांड में ऐसा करने में सक्षम होंगे।


6
यहाँ दिखाया गया ffmpeg कमांड ऑडियो को एनकोड करेगा। यदि आप किसी अन्य प्रारूप से परिवर्तित कर रहे हैं, तो यह ठीक है, लेकिन अगर आप कला को मौजूदा एमपी 3 में फिर से एन्कोडिंग के बिना जोड़ना चाहते हैं, तो इसके -acodec copyबाद जोड़ें -map 1
jsd

यह मेरे लिए काम नहीं कर रहा है, कोई विशेष कारण? मुझे केवल एमपी 3 फ़ाइल मिलती है लेकिन कोई थंबनेल नहीं। @ जेएसडी
बावर्ची फिरौन

क्षमा करें @ChefPharaoh मुझे नहीं पता कि यह आपके लिए काम क्यों नहीं कर रहा है। मैंने कला को जोड़ने के दौरान सिर्फ wav-> एमपी 3 करने की कोशिश की, और ऊपर दिखाए गए ffmpeg कमांड के साथ एक मौजूदा एमपी 3 में सिर्फ कला जोड़ रहा हूं। दोनों बार यह ठीक काम किया।
jsd

@evilsoup मुझे यकीन नहीं है कि मैं कुछ सुपर बुराई या गलत कर रहा हूं, लेकिन मैं अपने एमपी 3 फाइलों को प्रतिस्थापन प्रतिस्थापन का उपयोग करके संशोधित करने में सक्षम हूं। किंडा इस स्क्रिप्ट को सरल करता है और यह सुपर फास्ट लगता है।
rien333

एक इलाज की तरह काम किया, और मैं भी ffmpeg को लंगड़ा से थोड़ा तेज पाया :)
Tina


5

आप इसके लिए फैंसीऑडियो रत्न का उपयोग कर सकते हैं । यह एमपी 3 फाइल में एल्बम आर्ट जोड़ सकता है। प्रलेखन यहाँ उपलब्ध है

विशेषताएं

  1. एकल mp3 फ़ाइल में एल्बम कला जोड़ें
  2. कई एमपी 3 फ़ाइलों के लिए एल्बम कला जोड़ें।

जब एक छवि और कई एमपी 3 फ़ाइलों वाले फ़ोल्डर में चलाया जाता है, तो स्क्रीन शॉट नीचे फैंसी_ऑडियो का आउटपुट दिखाता है

यहाँ छवि विवरण दर्ज करें

स्क्रीन शॉट के नीचे, एमपी 3 और छवि फ़ाइलों वाले फ़ोल्डर में चलने पर फैंसी_ऑडियो का आउटपुट दिखाता है

यह छवि एक एमपी 3 और छवि फ़ाइलों वाले फ़ोल्डर में चलाने पर फैंसी_ऑडियो का आउटपुट दिखाती है


यह आसान है, और lameएक ही छवि को कई एमपी 3 फाइलों में जोड़ते समय तेजी से काम करता है । आपको रूबी को जानने की आवश्यकता नहीं है;) - यह एक स्टैंडअलोन स्क्रिप्ट है।
टॉमस गैंडर

0

ओपी कहता है कि वह पसंद करेगा यदि कवर वेब से डाउनलोड किया गया है, और मैंने सिर्फ उस उपयोग के लिए एक बहुत ही अच्छी स्क्रिप्ट लिखी है , eye3Dऔर sacadदोनों पाइप के लिए इंस्टॉल करने योग्य है। eye3Dइस उद्देश्य के लिए बहुत उपयोगी है क्योंकि यह ऑडियो को फिर से एनकोड करने के लिए प्रतीत नहीं होता है और --to-v2.4ध्वज का उपयोग करके किसी भी एमपी 3 फ़ाइलों को संभालता है, चाहे वह आईडी टैग का प्रकार कोई भी हो। स्क्रिप्ट को उस निर्देशिका से लॉन्च किया जाना चाहिए जिसमें एमपी 3 फाइलें हैं। यह बिना किसी तर्क के साथ चलाया जा सकता है, आईडी 3 टैग से कलाकार और एल्बम के नाम का अनुमान लगा सकते हैं, या तर्क के रूप में मैनुअल नामों के साथ, जैसे embedart "pink floyd" "dark side of the moon"। यह मछली के खोल के लिए लिखा गया है, लेकिन यदि आप चर अस्वच्छता को काटने के लिए सभी सेट कमांड बदलते हैं, तो इसे आसानी से काटने के लिए पोर्टेबल होना चाहिए।

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 यूनिकोड के साथ काम नहीं करता है । यदि कोई भी गैर-असिसी पात्र .mp3 फ़ाइल नाम (या यहां तक ​​कि केवल पूर्वज निर्देशिका नाम, जैसे एल्बम निर्देशिका) में हैं, तो यह गर्भपात करता है। एलटीए।

तो आप भाग्य से बाहर हैं अगर एल्बम या गीत का शीर्षक अंग्रेजी में नहीं लिखा है!

उदाहरण के लिए:

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

जाहिरा तौर पर eyeD3 .mp3 फ़ाइल का पूरा पथ .mp3 फ़ाइल के अंदर रखना चाहता है और गैर-एससीआई अक्षर नहीं संभाल सकता है।

बिना किसी अपवाद के: 'ascii' कोडेक 5-16 की स्थिति में वर्णों को सांकेतिक शब्दों में बदलना नहीं कर सकता: क्रम में नहीं (128)
eyed3: ERROR: 'ascii' कोडेक वर्णों को 5-16 की स्थिति में सांकेतिक शब्दों में बदलना नहीं कर सकता: क्रम में नहीं (128)
वापस ट्रेस करें 
... (लंबी ट्रेसबैक छोड़ा गया) ...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.