एमपी 3 को AAC में बदलने के लिए FFmpeg कमांड


21

मैं यह आदेश जारी कर सकता हूं:

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

एक m4a फ़ाइल बनाने के लिए।

लेकिन जब मैं यह आदेश जारी करता हूं

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

ffmpeg यह कहते हुए एक त्रुटि फेंक रहा है

आउटपुट फ़ाइल # 0 (गलत कोडेक पैरामीटर?) के लिए हेडर नहीं लिख सका।

इसके अलावा, m4a फ़ाइल का आकार वास्तव में मूल फ़ाइल की तुलना में लगभग 5.8 गुना बड़ा है, जो कि मैं जो चाहता था वह नहीं है और मैं एएसी में क्यों बदलना चाहता था।

जवाबों:


38

मैं AAC में कैसे परिवर्तित कर सकता हूं?

यह एएसी ऑडियो इनपुट को कन्वर्ट करने के लिए सबसे बेसिक FFmpeg कमांड है जो उच्चतम गुणवत्ता वाले AAC FFmpeg का उपयोग करता है। libfdk_aacFraunhofer AAC एन्कोडर है, और यह तब उपलब्ध होता है जब आप इसके लिए समर्थन के साथ FFmpeg संकलित करते हैं।

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

गुणवत्ता को बदलने के लिए, आपके पास दो विकल्प हैं:

  • चर बिटरेट (VBR) के लिए, -vbrविकल्प का उपयोग करें । उदाहरण के लिए, -vbr 4एक अच्छा विकल्प है (स्टीरियो ऑडियो के लिए लगभग 128 kBit / s)। उच्चतर का मतलब बेहतर है। मान 1 से 5 तक है।

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • निश्चित बिटरेट (CBR) के लिए, -b:aउदाहरण के लिए, विकल्प का उपयोग करें -b:a 128k। 128 kBit / s अधिकांश स्थितियों के लिए पर्याप्त होना चाहिए। आप अक्सर कुछ कम भी चुन सकते हैं।

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

आप डिफ़ॉल्ट AAC-LC (कम जटिलता) प्रोफ़ाइल के बजाय HE-AAC (v1 / v2) का भी उपयोग कर सकते हैं, जो कम बिटरेट के लिए सबसे उपयुक्त है:

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

अगर मेरे पास नहीं है तो libfdk_aacक्या होगा ?

FFmpeg के कुछ संस्करणों में libfdk_aac(लाइसेंसिंग कारणों से) नहीं है। यदि ऐसा है, तो आप अंतर्निहित AAC एन्कोडर का उपयोग कर सकते हैं:

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

यह एनकोडर ठीक से VBR का समर्थन नहीं करता है, इसलिए यदि आपको उस या HE-AAC की आवश्यकता है, तो पढ़ें।

आप अपने आप से ffmpeg संकलित कर सकते हैं और libfdk_aacसमर्थन जोड़ सकते हैं । FFmpeg Wiki पर गाइड हैं । लिनक्स पर संकलित करना आसान है, ओएस एक्स पर मध्यम रूप से आसान है, और विंडोज पर कठिन है। जब आप संकलन गाइडों का पालन करते हैं और पहले उपयुक्त पुस्तकालयों को स्थापित करते हैं, तो FFmpeg अब आपको उपयोग करने का विकल्प देता है libfdk_aac


आपके मूल दृष्टिकोण के साथ कुछ समस्याएं थीं:

  • alacएएसी नहीं है ALAC Apple लॉसलेस ऑडियो कोडेक है , जबकि AAC उन्नत ऑडियो कोडिंग है

  • इसलिए आपका आउटपुट इनपुट से बड़ा है, क्योंकि MP3 के विपरीत, ALAC अभी भी संपीड़ित है, लेकिन इसे दोषरहित करने की आवश्यकता है - इसलिए इसे अधिक डेटा संग्रहीत करने की आवश्यकता है।

  • .aacALAC ऑडियो के लिए आउटपुट कंटेनर नहीं है। यदि आप AAC का उपयोग करते हैं, तो उसे काम करना चाहिए। मैं हालांकि MP4 या M4A का उपयोग करेगा।


Ubuntu 12.04 पर मैं एक विकल्प का उपयोग करने में असमर्थ था -c:a, क्या इसका कोई पर्यायवाची है? मुझे लगता है कि इसका मतलब हो सकता है, -acodec:aलेकिन अंत में मैंने इसे छोड़ दिया, और ffmpegवांछित आउटपुट फ़ाइल नाम के आधार पर एक कोडेक कटौती करने में सक्षम था। ( -strict experimentalहालांकि जरूरत है, और -map_metadata 0:0अच्छे उपाय के लिए फेंक दिया गया है , ID3 टैग को संरक्षित करने के लिए।)
ट्रिपल

यह भी ध्यान देने योग्य है: मैं M4B फाइलें (ऑडियोबुक) चाहता था, जो ffmpegसमर्थन करने के लिए प्रकट नहीं होती है, लेकिन एम 4 ए में परिवर्तित होती है और फिर बस नाम बदलने का काम लगता है।
ट्रिपलए

@tripleee का मतलब है कि आप नामक एक पुराने कार्यक्रम का उपयोग कर रहे हैं ffmpeg, लेकिन यह वास्तव में FFmpeg से नहीं है, लेकिन लीबव कांटा है। उबंटू ने दुर्भाग्य से इसे "वास्तविक" ffmpeg के बजाय बंडल किया। देखें: कौन मुझे अंतर और ffmpeg, libav, और avconv के बीच संबंध बता सकते हैं
slhck

@ एसएलएचएचके: त्वरित अपडेट और लिंक के लिए धन्यवाद!
ट्रिपल

1
। आप FFmpeg को ADTS फॉर्मेट में आउटपुट से जोड़कर भी बाध्य कर सकते हैं -f adts
बिग न्यू निक

4

Zeranoe विंडोज बिल्ड के लिए AAC में आसान कन्वर्ट

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

Libfaac या libfdk_aac के बजाय "aac" का उपयोग करें: https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg तीन AAC-LC एनकोडर (aac, libfaac, libfdk_aac) और एक HE-AAC (v1 / 2) एनकोडर (libfdk_aac) का समर्थन कर सकता है। libLacac और libfdk_aac के लाइसेंस GPL के अनुकूल नहीं हैं, इसलिए GPL अनुमति नहीं देता है। जब GPL- लाइसेंस कोड भी शामिल है, तो इन लाइसेंस के तहत लाइसेंस वाले बायनेरिज़ का वितरण शामिल है। "


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