Come posso convertire .flac in .mp3 con ffmpeg, mantenendo tutti i metadati (cioè convertendo i commenti Vorbis nei file .flac in metadati ID3v2 di .mp3)?
Come posso convertire .flac in .mp3 con ffmpeg, mantenendo tutti i metadati (cioè convertendo i commenti Vorbis nei file .flac in metadati ID3v2 di .mp3)?
Risposte:
Il comando seguente mantiene l'alta qualità su .mp3 (320 kbps) ei metadati del file .flac vengono convertiti nel formato ID3v2, che può essere incluso nei file .mp3:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 copia automaticamente i metadati in ID3v2 da FLAC senza bisogno di specificarli -map_metadata 0 -id3v2_version 3
, sebbene non venga copiato nei tag ID3v1. Uso uno strumento separato per questo.
Risposta perfetta sopra. Lo uso insieme a find per aggiungere tutti i file FLAC in una sottostruttura ad iTunes con questo comando
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Per aggiungere automaticamente i file risultanti a iTunes, ottieni la directory di importazione di iTunes con
find ~/Music/ -name "Automatically Add*"
risultato es
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Quindi esegui ad es
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Per aggiungere automaticamente tutte le tracce convertite su iTunes.
Se vuoi risparmiare un po 'di spazio, prova la raccomandazione di hydrogenaud.io :
Molto alta qualità: Hi-Fi, a casa, o silenziosa di ascolto, con la migliore dimensione del file
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
o-V3 (~175 kbps)
sono raccomandati. Queste impostazioni VBR normalmente producono risultati trasparenti. Possono esistere differenze udibili tra questi preset, ma sono rari.
Fonte: http://wiki.hydrogenaud.io/index.php?title=LAME
Se vuoi usare questa opzione in ffmpeg, dovresti usare il -q:a 0
alias.
Controlla la qualità con
-qscale:a
(o l'alias-q:a
). I valori sono specifici del codificatore, quindi per libmp3lame l'intervallo è 0-9 dove un valore inferiore è una qualità superiore. 0-3 normalmente produrrà risultati trasparenti, 4 (predefinito) dovrebbe essere vicino alla trasparenza percettiva e 6 produrrà una qualità "accettabile". L'opzione-qscale:a
è mappata-V
all'opzione nello strumento di interfaccia della riga di comando lame autonomo.
Fonte: https://trac.ffmpeg.org/wiki/Encode/MP3
Se vuoi anche i metatag ID3v1, dovresti aggiungere il -write_id3v1 1
parametro.
Quindi il mio comando finale è:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
Stavo testando il seguente comando per convertire il infile.flac
file in outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
A partire da Ubuntu 16.04, il comando precedente sembra copiare (la maggior parte? Tutti?) I metadati.
-q:a 0
dice ffmpeg
di utilizzare VBR della massima qualità.
Tuttavia, è ffmpeg
stata la transcodifica della copertina del mio album da jpeg
a png
, il che ha aumentato le dimensioni della copertina.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(Immagino che la conversione di cui sopra abbia senso visto come ffmpeg
funziona .)
Dopo un po 'di ricerca, ho trovato l' -c:v copy
opzione, che specifica che il flusso video deve essere copiato, anziché transcodificato. Il comando completo è:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Il comando precedente risulta in:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Per convertire ricorsivamente in mp3 tutti i file flac nelle cartelle nidificate, ho usato questo comando:
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"' \;
Creerà una cartella denominata "mp3" all'interno di quella con i file flac e, all'interno della cartella mp3, salverà i relativi file mp3 con bitrate di 320kbps, senza mantenere nel nome la vecchia estensione del file.
$file
come "$file"
.
:r
sembra essere un zsh
modificatore, che non funziona in bash
. In Bash potresti sostituire "${file:r}.mp3"
con "${file%.flac}.mp3"
.
${file%.*}
So che questo non è stato chiesto, ma considerando che uno dei motivi per cui è stato fatto (almeno questo è quello che volevo fare) è che la musica può essere importata in Apple iTunes che non supporta FLAC. In tal caso ha più senso convertire FLAC nel formato lossless di Apple, m4a. Ho usato questo comando per convertire tutti i file nella cartella corrente, pur mantenendo dimensioni di file simili.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Questo script flac2mp3.sh utilizza ffmpeg
per convertire un albero di cartelle di file FLAC in un altro albero di cartelle di file MP3. La copertina è inclusa, se presente. È possibile impostare una CORES
variabile per creare processi in background per convertire più file contemporaneamente.
ffmpeg
domande sull'utilizzo del cli a Super User . Stack Overflow è solo per domande che coinvolgono la programmazione. Inoltre, FLAC supporta ufficialmente solo i commenti di Vorbis , quindi presumo che tu voglia convertire in ID3v2 invece di "mantenere".