سؤال أمر FFmpeg لتحويل MP3 إلى AAC


يمكنني إصدار هذا الأمر:

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 مرات أكبر من الملف الأصلي ، وهو بالتأكيد ليس ما أريده ولماذا كنت أرغب في تحويل إلى AAC.


17
2017-12-22 12:58


الأصل




الأجوبة:


كيف يمكنني التحويل إلى AAC؟

هذا هو الأمر الأساسي FFmpeg لتحويل المدخلات إلى الصوت AAC باستخدام أعلى جودة AAC FFmpeg. libfdk_aac هو برنامج التشفير Fraunhofer AAC ، وهو متوفر عندما قمت بتجميع FFmpeg مع دعم لها.

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

لتغيير الجودة ، لديك خياران:

  • بالنسبة لمعدل البت المتغير (VBR) ، استخدم -vbr اختيار. فمثلا، -vbr 4 هو اختيار جيد (حوالي 128 كيلوبت في الثانية لصوت ستيريو). العالي يعني أفضل. تتراوح القيم من 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
    

يمكنك أيضًا استخدام HE-AAC (الإصدار 1 / v2) بدلاً من ملف تعريف AAC-LC الافتراضي (التعقيد المنخفض) ، وهو الأنسب لمعدلات البتات المنخفضة:

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 الويكي. التجميع سهل على لينكس ، وسهل الاستخدام على نظام التشغيل OS X ، والأكثر صعوبة على نظام ويندوز. عند اتباع أدلة التجميع وتثبيت المكتبات المناسبة من قبل ، يتيح لك FFmpeg الآن خيار الاستخدام libfdk_aac.


كانت هناك بعض المشاكل مع النهج الأصلي الخاص بك:

  • alac ليس AAC. ALAC هو برنامج Apple Lossless Audio Codec، في حين أن AAC هو ترميز صوتي متقدم.

  • هذا هو السبب في أن مخرجاتك أكبر من المدخلات ، لأنه على النقيض من MP3 ، لا يزال ALAC مضغوطًا ، ولكن يجب أن يكون غير ضار - ولهذا السبب يحتاج إلى تخزين المزيد من البيانات.

  • .aac ليس حاوية إخراج لصوت ALAC. إذا كنت تستخدم AAC ، يجب أن تعمل. أود استخدام MP4 أو M4A بالرغم من ذلك.


34
2017-12-22 13:28



على Ubuntu 12.04 لم أتمكن من استخدام خيار -c:a، هل هذا له أي مرادف؟ أعتقد أنه قد يعني -acodec:a ولكن في النهاية أنا أسقطته ، و ffmpegتمكن من استنتاج برنامج ترميز يستند إلى اسم ملف الإخراج المطلوب. (بحاجة إلى -strict experimental على أية حال؛ وألقى في -map_metadata 0:0 لحسن التدبير ، للحفاظ على علامات ID3.) - tripleee
تجدر الإشارة أيضا: أردت ملفات M4B (الكتب المسموعة) ، والتي ffmpeg لا يبدو لدعم ، ولكن تحويل إلى M4A ومن ثم إعادة تسمية يبدو للعمل. - tripleee
tripleee هذا يعني أنك تستخدم برنامجًا قديمًا يسمى ffmpeg، لكنها في الحقيقة ليست من FFmpeg ، ولكن شوكة Libav. Ubuntu للأسف المجمعة بدلا من ffmpeg "الحقيقي". نرى: من يستطيع أن يقول لي الفرق والعلاقة بين ffmpeg ، libav ، و avconv - slhck
slhck: شكرًا للتحديث السريع والرابط! - tripleee
tripleee في الواقع لا ، وملفات m4a مماثلة ل. mp4 (انها مجرد تسمية اتفاقية لملفات MP4 مع الصوت فقط) ، ولكن لديك تنسيق مختلف عن .aac (والذي يعرف باسم دفق ADTS). يمكنك أيضًا إجبار FFmpeg على الإخراج بتنسيق ADTS عن طريق الإضافة -f adts. - Bigue Nique


من السهل تحويل إلى AAC ل Zeranoe Windows Builds

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

استخدم "aac" بدلاً من libfaac أو libfdk_aac: https://trac.ffmpeg.org/wiki/Encode/AAC

"يمكن لبرنامج FFmpeg دعم ثلاثة مشفرات AAC-LC (aac ، libfaac ، libfdk_aac) وشفرة HE-AAC (v1 / 2) (libfdk_aac). لا تتوافق تراخيص libfaac و libfdk_aac مع GPL ، لذلك لا تسمح GPL توزيع الثنائيات التي تحتوي على كود مرخص بموجب هذه التراخيص عندما يتم أيضًا تضمين شفرة GPL المرخصة. "


2
2018-06-12 14:47



libfaac تم أيضًا إزالة الدعم اعتبارًا من 3.2. - slhck