Comando FFmpeg per convertire MP3 in AAC


21

Posso emettere questo comando:

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

per creare un file m4a.

Ma quando emetto questo comando

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

ffmpeg sta lanciando un errore dicendo

Impossibile scrivere l'intestazione per il file di output # 0 (parametri codec errati?).

Inoltre, la dimensione del file m4a è in realtà quasi 5,8 volte più grande del file originale, che non è assolutamente quello che volevo e perché volevo convertirlo in AAC.

Risposte:


38

Come posso convertire in CAA?

Questo è il comando FFmpeg più semplice per convertire l'ingresso in audio AAC usando la massima qualità AF FFmpeg. libfdk_aacè il codificatore AAC Fraunhofer ed è disponibile quando si compila FFmpeg con il supporto per esso.

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

Per cambiare la qualità, hai due opzioni:

  • Per bitrate variabile (VBR), utilizzare l' -vbropzione. Ad esempio, -vbr 4è una buona scelta (circa 128 kBit / s per l'audio stereo). Più alto significa meglio. I valori vanno da 1 a 5.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • Per bitrate fisso (CBR), utilizzare l' -b:aopzione, ad esempio -b:a 128k. 128 kBit / s dovrebbero essere abbastanza buoni per la maggior parte delle situazioni. Spesso puoi scegliere anche qualcosa di più basso.

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

Puoi anche usare HE-AAC (v1 / v2) invece del profilo AAC-LC predefinito (bassa complessità), che è più adatto per bitrate bassi:

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

E se non avessi libfdk_aac?

Alcune versioni di FFmpeg non hanno libfdk_aac(per motivi di licenza). In tal caso, puoi utilizzare l'encoder AAC incorporato:

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

Questo codificatore non supporta correttamente VBR, quindi se hai bisogno di questo o HE-AAC, continua a leggere.

Puoi compilare ffmpeg tu stesso e aggiungere il libfdk_aacsupporto. Ci sono guide sul Wiki di FFmpeg . La compilazione è facile su Linux, moderatamente facile su OS X e piuttosto difficile su Windows. Quando segui le guide alla compilazione e installi prima le librerie appropriate, ora FFmpeg ti dà la possibilità di usare libfdk_aac.


Ci sono stati alcuni problemi con il tuo approccio originale:

  • alacnon è AAC. ALAC è l' Apple Lossless Audio Codec , mentre AAC è Advanced Audio Coding .

  • Ecco perché il tuo output è più grande dell'input, perché a differenza di MP3, ALAC è ancora compresso, ma deve essere senza perdita di dati, ecco perché deve memorizzare più dati.

  • .aacnon è un contenitore di output per l'audio ALAC. Se usi la CAA, dovrebbe funzionare. Vorrei usare MP4 o M4A però.


Su Ubuntu 12.04 non sono stato in grado di utilizzare un'opzione -c:a, ha qualche sinonimo? Immagino che potrebbe significare, -acodec:ama alla fine l'ho lasciato cadere e ffmpegsono riuscito a dedurre un codec in base al nome del file di output desiderato. (Necessario -strict experimentalperò; e lanciato -map_metadata 0:0per buona misura, per preservare i tag ID3.)
Tripleee

Vale anche la pena notare: volevo i file M4B (audiolibri), che ffmpegnon sembrano supportare, ma la conversione in M4A e quindi solo la ridenominazione sembra funzionare.
Tripleee

@tripleee Ciò significa che stai utilizzando un programma obsoleto chiamato ffmpeg, ma in realtà non proviene da FFmpeg, ma dal fork di Libav. Ubuntu purtroppo lo ha raggruppato invece del "vero" ffmpeg. Vedi: Chi può dirmi la differenza e la relazione tra ffmpeg, libav e avconv
slhck,

@slhck: grazie per l'aggiornamento rapido e il link!
triplo

1
@tripleee In realtà no, i file .m4a sono identici a .mp4 (è solo una denominazione di convenzione per i file mp4 con solo audio), ma hanno un formato diverso da .aac (che è noto come flusso ADTS). È inoltre possibile forzare l'output di FFmpeg in formato ADTS aggiungendo -f adts.
Bigue Nique,

4

Facile conversione in AAC per Zeranoe Windows Builds

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

Usa "aac" invece di libfaac o libfdk_aac: https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg può supportare tre codificatori AAC-LC (aac, libfaac, libfdk_aac) e un codificatore HE-AAC (v1 / 2) (libfdk_aac). Le licenze di libfaac e libfdk_aac non sono compatibili con GPL, quindi GPL non consente distribuzione di file binari contenenti codice concesso in licenza in base a tali licenze quando è incluso anche il codice concesso in licenza GPL. "


2
libfaacil supporto è stato rimosso anche dal 3.2.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.