एक बड़े ALAC पुस्तकालय को MP3 में बदलने का सबसे कारगर तरीका


5

मेरे पास सीडी की एक बड़ी लाइब्रेरी है, जिसे मैं अपने मुख्य संगीत पुस्तकालय के रूप में इस्तेमाल करता हूं। मैं इस लाइब्रेरी की एक प्रति को पोर्टेबल उपकरणों के लिए vbr एमपी 3 में बदलना चाहता हूं, हालांकि मैं अपने लैपटॉप पर ऐसा नहीं करना चाहता, क्योंकि लगभग 650Gb संगीत है और मैं अपने लैपटॉप को छोड़ने के लिए बहुत यात्रा करता हूं समय के लिए यह मेरे पूरे पुस्तकालय को बदलने की आवश्यकता होगी। मेरे दोस्त के पास कुछ सर्वर स्पेस है (डेबियन स्क्वीज़ चलाने के लिए) वह मुझे अपने पुस्तकालय को परिवर्तित करने के लिए एक या दो सप्ताह के लिए उधार देने को तैयार है। इस बारे में जाने के लिए सबसे अच्छी उपयोगिता या तरीका क्या होगा। एकल गीतों या एकल एल्बमों के लिए मैं सिर्फ कुछ का उपयोग करता हूं

#!/bin/sh
for file in "$@" ; do
name=`echo "$file" | sed -e "s/.mp4$//g"`
ffmpeg -i "$file" -ac 2 -f wav - | lame --preset standard - "$name.mp3"
done

मुझे यकीन है कि ऐसा करने के लिए बहुत अधिक कुशल तरीका है। मेरा संगीत वर्तमान में "कलाकार - एल्बम - ट्रैक्स" के रूप में आयोजित किया गया है और मैं चाहूंगा कि आउटपुट इसे मिरर करें।


सर्वर में कितने सीपीयू / कोर होते हैं? (LAME केवल एकल-थ्रेडेड एन्कोडिंग का समर्थन करता है, लेकिन क्वाड-कोर पर आप एक ही बार में चार गीतों को एन्कोड कर सकते हैं।)
grawity

मेरे पास ट्रांसकोडिंग के लिए सर्वर पर 4 सीपीयू कोर उपलब्ध हैं।
Leda

जवाबों:


4

नीचे दिए गए उदाहरणों में, ~/Music/ स्रोत निर्देशिका के रूप में माना जाता है।


बनाओ convert.sh स्क्रिप्ट:

$ cat > convert
#!/bin/bash
input=$1
output=${input#.*}.mp3
ffmpeg -i "$input" -ac 2 -f wav - | lame -V 2 - "$output"
[Ctrl-D]
$ chmod +x convert
  • यदि आप आउटपुट के लिए एक अलग स्थान का उपयोग करना चाहते हैं, तो इसे पहले जोड़ें ffmpeg:

    output=~/Converted/${output#~/Music/}
    mkdir -p "${output%/*}"
    

का उपयोग कर परिवर्तित करें parallel से moreutils :

$ find ~/Music/ -type f -name '*.mp4' -print0 | xargs -0 parallel ./convert --

जीएनयू के साथ भ्रमित होने की नहीं parallel, जो एक अलग वाक्यविन्यास का उपयोग करता है:

$ find ~/Music/ -type f -name '*.mp4' | parallel ./convert

2

जीएनयू समानांतर के साथ आपको स्क्रिप्ट की भी आवश्यकता नहीं है:

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -ac 2 -f wav - \| lame -V 2 - {.}.mp3

एक ही बात को लंगड़े का उपयोग किए बिना पूरा किया जा सकता है, मान लें कि आपके ffmpeg के संस्करण को libmp3lame सक्षम किया गया है (अधिकांश संस्करण हैं):

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 {.}.mp3

आप भी उपयोग कर सकते हैं -iname के बजाय -name केस को असंवेदनशील मिलान पाने के लिए खोज कमांड में (ताकि यह सभी * .mp4 और * .MP4, और सभी केस वेरिएशन को उठाएगा) इसके अलावा, -ac 2 दूसरे संस्करण में कड़ाई से आवश्यक नहीं है; एमपी 3 वैसे भी केवल अधिकतम दो चैनलों का समर्थन कर सकता है, इसलिए यदि आवश्यक हो तो ffmpeg स्वचालित रूप से ऑडियो को दो चैनलों में परिवर्तित कर देगा, जो आपके पास किसी भी मोनो ऑडियो में एक अतिरिक्त व्यर्थ चैनल जोड़ने से बच जाएगा।

देख यह ffmpeg विकी पेज MP3s एन्कोडिंग के बारे में कुछ बुनियादी जानकारी के लिए, और इस हाइड्रोजेनो गाइड अधिक गहराई से जानकारी के लिए।

यदि आपके पास अन्य मशीनें हैं जिन्हें आप ssh कर सकते हैं (जैसे कि शायद आपका लैपटॉप रातों के दौरान उपलब्ध है) GNU समानांतर उन CPU का उपयोग कर सकता है। --Trc (फ़ाइलों को स्थानांतरित करने के लिए) और --retries (दिन के दौरान लैपटॉप के दूर रहने से निपटने के लिए) के उदाहरण देखें। देख http://www.gnu.org/software/parallel/man.html#example__using_remote_computers

अधिक जानने के लिए इंट्रो वीडियो देखें: http://www.youtube.com/watch?v=OpaiGYxkSuQ

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