सभी। मेटाडाटा को रखते हुए .flac to .mp3 को ffmpeg में बदलें


89

मैं कैसे परिवर्तित कर सकते हैं .flac को .mp3 साथ ffmpeg, सभी मेटाडाटा (कि .mp3 की ID3v2 मेटाडाटा को .flac फाइलों में वॉर्बिस टिप्पणी परिवर्तित) रखने?


5
कृपया ध्यान दें कि अगली बार आपको सुपर यूजरffmpeg पर क्लि उपयोग के प्रश्न पूछने चाहिए । स्टैक ओवरफ्लो केवल प्रोग्रामिंग से जुड़े सवालों के लिए है। इसके अलावा, FLAC आधिकारिक तौर पर वोरबिस टिप्पणी का समर्थन करता है , इसलिए मुझे लगता है कि आप "कीप" के बजाय ID3v2 में परिवर्तित करना चाहते हैं।
लल्गन

ठीक है, मैंने अपना प्रश्न तय किया। मैंने यहाँ से पूछा क्योंकि मैंने StackOverflow (जैसे यह या यह ) पर इस तरह के प्रश्न देखे , और यह माना कि यह आपके ज्ञान को साझा करने के लिए दिलचस्प हो सकता है। इसके अलावा, मुझे लगता है कि वहाँ एक ffmpeg टैग है , तो क्यों मेरे समाधान यहाँ साझा नहीं करते? ffmpeg का उपयोग बहुत सारे डेवलपर्स द्वारा बहुत सारे एप्लिकेशन में किया जाता है।
वीटो जेंटाइल

4
Ffmpeg टैग कहते हैं, "FFmpeg कमांड लाइन टूल के इंटरैक्टिव उपयोग के बारे में प्रश्न सूपर उपयोगकर्ता पर कहा जाना चाहिए।"। यह कोई बड़ी बात नहीं है, लेकिन मैं सिर्फ यह बताना चाहता हूं क्योंकि मेरी राय में यहां बहुत सारे ऑफ-टॉपिक सवाल हैं।
१०:१४ बजे १०:१४ पर लल्गन

जवाबों:


156

निम्न आदेश .mp3 (320 kbps) पर उच्च गुणवत्ता रखता है। और .flac फ़ाइल से मेटाडेटा को ID3v2 प्रारूप में परिवर्तित किया जाता है, जिसे .mp3 फ़ाइलों में शामिल किया जा सकता है।

ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3

1
यह ध्यान देने योग्य है कि "ffmpeg" को "एवोकन" द्वारा बदलने की आवश्यकता हो सकती है।
शॉकबर्नर

6
FWIW ffmpeg3.2 स्वचालित रूप से निर्दिष्ट करने की आवश्यकता के बिना FLAC से ID3v2 में मेटाडेटा की प्रतिलिपि बनाता है -map_metadata 0 -id3v2_version 3, हालांकि यह ID3v1 टैग में कॉपी नहीं करता है। मैं उसके लिए एक अलग टूल का उपयोग करता हूं।
दाई

1
गीत अभी भी नकल नहीं करते हैं
user151496

1
यदि यह कई भागों में विभाजित है तो क्या यह फ्लैक को विभाजित करता है?
Artyom

1
@Artyom आप शायद होना चाहिए क्यू अपने साथ फ़ाइल flac जहां विभाजन अंक चिह्नित कर रहे हैं। ऐसा है तो आप उपयोग कर सकते हैं shnsplit (कंसोल) या flacon अपनी फ़ाइल विभाजित और एमपी 3 के लिए कन्वर्ट करने के लिए भागों (जीयूआई)। आप केवल एक ही है, तो flac आप या तो एक लिख सकते हैं कुई यह या उपयोग ffmpeg के लिए -ss और आयकर विकल्प प्रत्येक गीत को काटने का।

58

ऊपर सही जवाब। मैं इस आदेश के साथ iTunes में एक सबट्री में सभी FLAC फ़ाइलों को जोड़ने के लिए खोज के साथ इसका उपयोग करता हूं

find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;

आइट्यून्स में स्वचालित रूप से परिणामी फाइलें जोड़ने के लिए, आईट्यून्स आयात निर्देशिका प्राप्त करें

find ~/Music/ -name "Automatically Add*"

परिणाम जैसे

/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized

फिर उदा

find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;

स्वचालित रूप से सभी परिवर्तित पटरियों को iTunes में जोड़ने के लिए।


3
"" उपयोगकर्ता / सर ", लामो।
हैरी स्वेन्सन

किस्सा: हमारी कंपनी के सभी उपयोगकर्ताओं के पास सितारों के नाम हैं, जो संक्षिप्त रूप से 3-5 वर्णों के हैं। मेरा "सिरियस" है, शॉर्ट सर;)
user2707001

अपरिचित विकल्प 'नाम'।
मॉन्स्टरमोरपीजी

14

यदि आप थोड़ी सी जगह बचाना चाहते हैं, तो hydrogenaud.io की सिफारिश आज़माएँ :

बहुत ही उच्च गुणवत्ता: HiFi, घर, या चुप सुनने, सबसे अच्छा फ़ाइल आकार के साथ -V0 (~245 kbps), -V1 (~225 kbps), -V2 (~190 kbps)या -V3 (~175 kbps)सिफारिश की है। ये VBR सेटिंग्स सामान्य रूप से पारदर्शी परिणाम प्रस्तुत करेंगी। इन प्रीसेट के बीच श्रव्य अंतर मौजूद हो सकते हैं, लेकिन दुर्लभ हैं।

स्रोत: http://wiki.hydrogenaud.io/index.php?title=LAME

यदि आप ffmpeg में इस विकल्प का उपयोग करना चाहते हैं, तो आपको -q:a 0उपनाम का उपयोग करना चाहिए ।

नियंत्रण गुणवत्ता -qscale:a(या उपनाम -q:a) के साथ। मान एन्कोडर विशिष्ट हैं, इसलिए libmp3lame के लिए रेंज 0-9 है जहां कम मूल्य एक उच्च गुणवत्ता है। 0-3 आम तौर पर पारदर्शी परिणाम देगा, 4 (डिफ़ॉल्ट) अवधारणात्मक पारदर्शिता के करीब होना चाहिए, और 6 एक "स्वीकार्य" गुणवत्ता पैदा करता है। विकल्प -qscale:aको -Vस्टैंडअलोन लंग कमांड-लाइन इंटरफ़ेस टूल में विकल्प में मैप किया जाता है ।

स्रोत: https://trac.ffmpeg.org/wiki/Encode/MP3

यदि आप ID3v1 मेटाटैग भी चाहते हैं, तो आपको -write_id3v1 1पैरामीटर जोड़ना चाहिए ।

तो मेरा अंतिम आदेश है:

ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3

8

मैं infile.flacफ़ाइल को परिवर्तित करने के लिए निम्न कमांड का परीक्षण कर रहा था outfile.mp3:

ffmpeg  -i infile.flac  -q:a 0  outfile.mp3

उबंटू 16.04 के अनुसार, उपर्युक्त कमांड मेटाडेटा को कॉपी (अधिकांश? सभी?) करने लगता है।

-q:a 0ffmpegउच्चतम गुणवत्ता वाले वीबीआर का उपयोग करना बताता है।

हालांकि, ffmpegसे मेरा एल्बम कला ट्रांसकोडिंग गया था jpegकरने के लिए pngहै, जो कवर कला के आकार में वृद्धि हुई।

Stream mapping:
  Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
  Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))

(मुझे लगता है कि कैसे ffmpegकाम करता है यह समझ में आता है कि उपरोक्त रूपांतरण प्रकार है ।)

कुछ खुदाई के बाद, मुझे -c:v copyविकल्प मिला , जो निर्दिष्ट करता है कि वीडियो स्ट्रीम को कॉपी किया जाना चाहिए, बजाय ट्रांसकोड किए। पूरा आदेश है:

ffmpeg  -i infile.flac  -c:v copy  -q:a 0  outfile.mp3

उपरोक्त आदेश परिणाम:

Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))

3

नेस्टेड फ़ोल्डरों में एमपी 3 के सभी फ़्लैक फ़ाइलों को पुन: रूपांतरित करने के लिए, मैंने इस कमांड का उपयोग किया:

find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;

यह flac फ़ाइलों के साथ एक के अंदर "mp3" नामक एक फ़ोल्डर बना देगा और, एमपी फ़ोल्डर के अंदर, यह नाम से पुरानी फ़ाइल एक्सटेंशन को रखे बिना, 320kbps की बिटरेट के साथ रिश्तेदार एमपी 3 फ़ाइलों को बचाएगा।


3

सबसे मेटाडेटा रखते हुए, एक ही निर्देशिका में सभी .flacफ़ाइलों को परिवर्तित करने के लिए एक-लाइनर :.mp3

for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done

(नोट: ${file:r}दिए गए फ़ाइलपथ के विस्तार को हटा देता है)

ffmpeg: flac to MP3


बस चर की $fileतरह बोली "$file"
चेजी चेज़

:rएक zshसंशोधक लगता है , जो काम नहीं करता है bash। बैश में आप के "${file:r}.mp3"साथ बदल सकता है "${file%.flac}.mp3"
21

केवल फ़ाइल नाम से, बैश उपयोग में दिखाने के लिए${file%.*}
Evhz

2

मुझे पता है कि यह नहीं पूछा गया था, लेकिन यह देखते हुए कि ऐसा करने के कारणों में से एक यह है कि (कम से कम यही मैं करना चाहता था) ताकि संगीत को Apple iTunes में आयात किया जा सके जो कि FLAC का समर्थन नहीं करता है। ऐसे मामले में यह FLAC को Apple के अपने दोषरहित प्रारूप, m4a में बदलने के लिए अधिक समझ में आता है। मैंने इस कमांड का उपयोग वर्तमान फ़ोल्डर में सभी फ़ाइलों को परिवर्तित करने के लिए किया, जबकि समान फ़ाइल आकार को बनाए रखा।

find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;


अपरिचित विकल्प 'नाम'। तर्क सूची को विभाजित करने में त्रुटि: विकल्प नहीं मिला
मॉन्स्टरमोरपीजी

@MonsterMMORPG आप शायद टाइप करने से चूक गए। आदेश खोजने के बाद। द। वर्तमान फ़ोल्डर में देखने के लिए खोज बताता है, और -नाम इसे फ़ाइल नाम से मिलान करने के लिए कहता है।
धीरज गुप्ता

2

यह flac2mp3.sh स्क्रिप्ट ffmpegMP3 फाइलों के दूसरे फ़ोल्डर ट्री में FLAC फाइलों के फोल्डर ट्री को बदलने के लिए उपयोग करता है। आवरण कला शामिल है, जब मौजूद है। आप CORESएक बार में कई फ़ाइलों को परिवर्तित करने के लिए पृष्ठभूमि कार्य बनाने के लिए एक चर सेट कर सकते हैं ।


त्रुटि sed देता है: -e अभिव्यक्ति # 1, char 26: अनधिकृत `s कमांड
मॉन्स्टरमोरपीजी

वास्तव में मैं क्या देख रहा था, धन्यवाद! मैंने VBR और अन्य उत्तरों को शामिल करने के लिए स्क्रिप्ट को थोड़ा समायोजित किया, यहाँ अपलोड किया गया: gist
aksh1618
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.