द्रव्यमान .flac -> .mp3 ट्रांसकोडिंग: एक शेल स्क्रिप्ट कैसे लिखें जो ID3 टैग जानकारी को संरक्षित करती है?


9

हाल के हफ्तों में मैं काफी हद तक 'हैंड्स-ऑन' एप्रोच से .flac -> .mp3 ट्रांसकोडिंग तक चला गया हूं, जो कि कहीं अधिक 'सेट और भूलना' है।

पहला कदम एक जीयूआई फ्रंट एंड (ऑडेसिटी विद अ लैम प्लग-इन) का उपयोग बंद करना था और इसके बजाय मैं यहां बताए गए तरीके का उपयोग करूंगा ।

दूसरा चरण एक बैश शेल स्क्रिप्ट का पता लगाना था जो यह बताएगा कि कमांड लूप को पुनरावर्ती रूप से काम करना है, जिससे निर्देशिकाओं में कई। यह उत्तर एक उपयोगकर्ता द्वारा askubuntu.com पर प्रदान किया गया था।

अब मैं सीखना चाहता हूं कि चीजों को कैसे और अधिक परिष्कृत किया जाए ताकि ID3 टैग जानकारी संरक्षित रहे। स्ट्रिप ID3 टैग डेटा से जुड़ी विधियाँ, नंगे न्यूनतम (अर्थात केवल शीर्षक फ़ील्ड बनी हुई हैं) को छोड़कर।

क्या कोई मुझे सिखा सकता है कि इस तरह की शेल स्क्रिप्ट कैसे लिखी जाए?


शेल स्क्रिप्ट को इस प्रकार अद्यतन किया गया है:

#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"
id3cp "$file" "${file%.flac}.mp3"

कर find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;~ / डेस्कटॉप में / ढेर निम्नलिखित उत्पादन देता है:

01 - Amon Tobin - Chomp Samba.flac: done         
LAME 3.98.4 64bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding <stdin> to ./01 - Amon Tobin - Chomp Samba.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0)
Parsing ./01 - Amon Tobin - Chomp Samba.flac: done.  Copying to ./01 - Amon Tobin - Chomp Samba.mp3: done

id3info मूल .flac और परिणाम के लिए .mp3 क्रमशः देता है:

*** Tag information for 01 - Amon Tobin - Chomp Samba.flac

(अर्थात कुछ भी नहीं);

*** Tag information for 01 - Amon Tobin - Chomp Samba.mp3
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz

.Flac में निश्चित रूप से टैग जानकारी है। मैं EasyTAG खोलकर इसे सत्यापित कर सकता हूं। EasyTAG इसे 'FLAC Vorbis Tag' के रूप में संदर्भित करता है, लेकिन .mp3 के लिए 'ID3 टैग'। क्या यह समस्या है?


क्या आपने प्रयोग करने की कोशिश की है ffmpeg?
हेलो 71

नहीं, मैंने नहीं किया है। सीएलआई पर ईमानदार होने से पहले कभी भी इसका इस्तेमाल नहीं किया। किसी ने मुझे इस पर्ल स्क्रिप्ट के बारे में बताया । मैं कोशिश करूँगा कि कल और रिपोर्ट करूँ क्योंकि अब देर हो चुकी है।
बोहेज

जवाबों:


7
#!/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"

धन्यवाद कम्बस! यह बहुत ज्यादा चाल है। मेरे द्वारा टैग किए जाने वाले अधिकांश टैग अब हैं, पोस्ट-ट्रांसकोड: शीर्षक, एल्बम, कलाकार, वर्ष, ट्रैक नंबर। सीडी क्षेत्र (1/1, 1/2, आदि) यह भर नहीं बनाया है, और न तो 'ट्रैक संख्या के लिए क्षेत्र है है के '। लेकिन यह वास्तव में मुझे परेशान नहीं करता है। दिलचस्प बात यह है कि मैंने इस स्क्रिप्ट को 'ट्रिप हॉप' संगीत वाली एक निर्देशिका पर आज़माया। टैग को चातुर्य में रखा गया था लेकिन स्क्रिप्ट ने शैली को 'ट्रिप हॉप' से 'ट्रिप-हॉप' में बदल दिया। इसलिए मुझे लगता है कि यह वहाँ ज्ञात शैलियों के एक डेटाबेस पर निर्भर है। आपके इनपुट के लिए एक बार फिर बहुत बहुत धन्यवाद!
बोहज

@pedrogent: मुझे खुशी है कि मैं मदद कर सका! आप मैन्युअल रूप से जांच सकते हैं कि "मेटाफ़्लैक -एक्सपोर्ट-टैग-टू-फ़ाइल" के साथ अन्य टैग क्या हैं और उन्हें $ TITLE और अन्य के समान उपयोग करें, लेकिन समस्या यह है कि id3 AFAIK में उनके लिए कोई समान फ़ील्ड नहीं हैं। शायद आप उन्हें टिप्पणी टैग में डाल सकते हैं। हां, शैलियों की एक पूर्वनिर्धारित सूची है: लिंक
कम्बस

हाय कंबस। हां, मुझे लगता है कि समस्या का एक हिस्सा यह है कि ID3 टैग डेटा के लिए कोई स्पष्ट 'मानक' नहीं है। कमेंट टैग की व्याख्या खिलाड़ी से खिलाड़ी (या बिल्कुल नहीं) से बहुत अलग तरीके से की जाती है। आपकी स्क्रिप्ट कमाल की है। एक बार फिर धन्यवाद।
बोहेज

1

कैसे एमपी 3 के लिए बड़े पैमाने पर सांकेतिक शब्दों में बदलना करने के लिए MP3fs का उपयोग करने के लिए

फ़्लैक फ़ाइलों को एमपी 3 में बदलने के लिए एक प्रोग्राम का उपयोग करने के बजाय, आप उन्हें एमपी 3 के रूप में वर्चुअल एमपी 3 के रूप में पेश करने के लिए एमपी 3 का उपयोग कर सकते हैं, और एक प्रोग्राम जो कॉपी नौकरियों की कतार बना सकता है। यह मेरे लिए शानदार काम करता है।

डाउनलोड करें और MP3fs और अल्ट्रापॉपियर स्थापित करें:

sudo apt-get install mp3fs ultracopier

प्रत्येक MP3fs के लिए फ्लैक और एमपी डाइरेक्टरी की एक जोड़ी बनाएं जिसे आप चलाना चाहते हैं। मेरे पास एक दोहरे कोर सीपीयू है इसलिए मैं दो चला रहा हूं। यदि आप उस विभाजन निर्देशिका को रखते हैं जहाँ आपकी flac फाइलें हैं, तो आप जल्दी से उन को स्थानांतरित कर सकते हैं। उस विभाजन को मेरे सिस्टम पर "स्टोरेज" कहा जाता है।

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

आप कमांड लाइन से या उन्हें जोड़कर निर्देशिकाओं को माउंट कर सकते हैं /etc/fstab। आप माउंट के समय पर वर्चुअल एमपी 3 के बिटरेट और एन्कोडिंग एल्गोरिथ्म को भी कॉन्फ़िगर कर सकते हैं। मैं एमपी 3 320kbps की एक निरंतर बिटरेट के साथ चाहता हूं, और लंगड़ा हर समय ले सकता है सबसे अच्छा एमपी 3 का उत्पादन करने की आवश्यकता है जो यह संभवतः कर सकता है।

कमांडलाइन पर:

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

किया हुआ! अल्ट्रापॉपियर शुरू करो। यह आपके gnome पैनल में एक संकेतक आइकन या आपके द्वारा उपयोग किए जाने वाले जो कुछ भी है, उसे रख देगा। इसे क्लिक करें, ऐड कॉपी चुनें। मैंने दो कोर का उपयोग करने के लिए दो बार किया। कुछ flacs को flac_1 में ले जाने के लिए अपनी फ़ाइल ब्राउज़र का उपयोग करें। MP3_1 निर्देशिका पर नेविगेट करें, और एक कॉपी कतार शुरू करने के लिए अपने एमपी 3 को अल्ट्रापॉपियर खिड़कियों में से एक में खींचें। अल्ट्राकॉपियर फाइलों के गंतव्य के लिए पूछेगा। अब आपके पास एक कोर व्यस्त है जो कि एमपी 3 के लिए फ्लैक्स का एक बैच एन्कोडिंग है।

अन्य कोर का उपयोग करने के लिए, flac फ़ाइलों को flac_2 पर ले जाएँ, और MP3 के एमपी 3 को दूसरी पराबैंगनी खिड़की पर खींचें।

अपडेट: अल्ट्रापोपियर के बजाय अब मैं मिनीकॉपियर का उपयोग कर रहा हूं, इसका उपयोग करना थोड़ा आसान है। नीचे टिप्पणी देखें।


Mp3fs और फ्यूज के हालिया संस्करणों के साथ निर्देशिका लिस्टिंग के साथ एक बग प्रतीत होता है: sourceforge.net/tracker/…
Ophidian

@ ओफ़िडियन: दिलचस्प। मैंने कुछ मशीनों पर विभिन्न वितरणों का उपयोग करके कुछ परीक्षण किए। मैंने उन्हें बिना किसी त्रुटि के, एक मिनट के भीतर, चल दिया था। मेरे द्वारा उपयोग किया जा रहा mp3fs संस्करण 0.30 है। मैंने kernels 2.3.38, 2.3.39, और 3.0.0 का उपयोग किया है, कामेच्छा संस्करणों 2.8.4 और 2.8.6। बग की रिपोर्टों में उल्लिखित 2.8.5 है। फ़्यूज़ को समाप्त करने के लिए यह लगभग पर्याप्त नहीं है अपराधी है, हालांकि, यदि आप 2.8.5 का उपयोग करते समय समस्याओं में भाग लेते हैं, तो यह एक अलग संस्करण की कोशिश करने के लायक हो सकता है। क्या आपने शायद mp3fs की कोशिश की थी? किस कर्नेल पर और किस परिवाद के साथ? क्या आपने किसी समस्या का सामना किया?
अर्जन ड्रिपमैन

Ultracopier के बजाय अब मैं उपयोग कर रहा हूँ MiniCopier , यह एक छोटे उपयोग करना आसान है। यह एक जावा ऐप है, इसके लिए किसी इंस्टॉलेशन की आवश्यकता नहीं है, लेकिन JRE की आवश्यकता है। इसमें एक टोकरी आइकन और एक बॉक्स आइकन है। आप टोकरी आइकन पर एक फ़ाइल प्रबंधक से एक या एक से अधिक स्रोतों को खींच सकते हैं, बॉक्स आइकन पर एक गंतव्य निर्देशिका, और यह सब आपको कतार में एक कॉपी नौकरी जोड़ने की आवश्यकता है। MiniCopier में विफल वस्तुओं के लिए एक अलग टैब है। MiniCopier मेरे सिस्टम पर ultracopier की तुलना में 1% कम 3% cpu चक्र का उपयोग करता है। यह सिर्फ 10 घंटे की कतार पर 12 मिनट बचा सकता है ;-)
अर्जन ड्रोमैन

यदि आप एक शेल आधारित प्रतिलिपि कतार चाहते हैं, तो मुझे सुपरयुसर में एक समाधान मिला । समायोजन के बिना, आप इसके साथ 2 कतारें नहीं चला पाएंगे, और मुझे यकीन नहीं है कि यह त्रुटियों के साथ क्या करेगा।
अर्जन ड्रिपमैन

0

id3cpकाम नहीं कर सकता क्योंकि FLAC ID3 का उपयोग नहीं करता है; इसके बजाय वोर्बिस टैग का उपयोग करता है।

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लंगड़ा स्वचालित रूप से उपयोग करता है; गुणवत्ता और whatnot को नियंत्रित करने के लिए और विकल्प मौजूद हैं। man avconvविस्तार के लिए जाँच करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.