Convierta .flac a .mp3 con ffmpeg, manteniendo todos los metadatos
88
¿Cómo puedo convertir .flac a .mp3 con ffmpeg, manteniendo todos los metadatos (es decir, convertir el comentario de Vorbis en archivos .flac a metadatos ID3v2 de .mp3)?
Tenga en cuenta que la próxima vez debe hacer ffmpegpreguntas sobre el uso de cli en Super User . Stack Overflow es solo para preguntas relacionadas con la programación. Además, FLAC admite oficialmente solo los comentarios de Vorbis , así que supongo que desea convertir a ID3v2 en lugar de "mantener".
llogan
Ok, arreglé mi pregunta. Pregunté aquí porque vi preguntas como esta en StackOverflow (por ejemplo, esto o esto ), y asumí que podría ser interesante compartir mi conocimiento. Además, veo que hay una etiqueta ffmpeg , entonces, ¿por qué no compartir mi solución aquí? ffmpeg es utilizado en muchas aplicaciones por muchos desarrolladores.
Vito Gentile
3
La etiqueta ffmpeg dice: "Las preguntas sobre el uso interactivo de la herramienta de línea de comandos FFmpeg deben hacerse en Superusuario". No es gran cosa, pero solo quería señalarlo ya que, en mi opinión, hay demasiadas preguntas fuera de tema aquí.
llogan
Respuestas:
152
El siguiente comando mantiene alta calidad en .mp3 (320 kbps) y los metadatos del archivo .flac se convierten al formato ID3v2, que se puede incluir en archivos .mp3:
Vale la pena señalar que "ffmpeg" puede necesitar ser reemplazado por "avconv".
shockburner
5
FWIW ffmpeg3.2 copia automáticamente metadatos en ID3v2 desde FLAC sin necesidad de especificar -map_metadata 0 -id3v2_version 3, aunque no copia en etiquetas ID3v1. Utilizo una herramienta separada para eso.
Dai
1
letras todavía no se copian aunque
user151496
1
¿Divide flac si hay varias partes?
Artyom
1
@Artyom Probablemente debería tener el archivo cue junto con su flac donde están marcados los puntos de división. Si es así, puede usar shnsplit (consola) o flacon (GUI) para dividir su archivo y convertir las partes a mp3. Si solo tiene un flac , puede escribir un cui para él o usar las opciones -ss y -t de ffmpeg para cortar cada canción.
56
Respuesta perfecta arriba. Lo uso junto con find para agregar todos los archivos FLAC en un subárbol a iTunes con este comando
Anécdota: todos los usuarios de nuestra empresa tienen nombres de estrellas, abreviados a 3-5 caracteres. El mío es "sirius", breve señor;)
user2707001
Opción 'nombre' no reconocida.
MonsterMMORPG
14
Si quieres ahorrar un poco de espacio, prueba la recomendación de hydrogenaud.io :
De muy alta calidad: alta fidelidad, casa, o escucha silenciosa, con el mejor tamaño de archivo
-V0 (~245 kbps), -V1 (~225 kbps), -V2 (~190 kbps)o -V3 (~175 kbps)se recomiendan. Estos ajustes de VBR normalmente producirán resultados transparentes. Pueden existir diferencias audibles entre estos preajustes, pero son raras.
Si desea usar esta opción en ffmpeg, debe usar el -q:a 0alias.
Controle la calidad con -qscale:a(o el alias -q:a). Los valores son específicos del codificador, por lo que para libmp3lame el rango es 0-9 donde un valor más bajo es una calidad más alta. 0-3 normalmente producirá resultados transparentes, 4 (predeterminado) debería estar cerca de la transparencia perceptiva y 6 produce una calidad "aceptable". La opción -qscale:ase asigna a la -Vopción en la herramienta de interfaz de línea de comandos lame independiente.
Después de investigar un poco, encontré la -c:v copyopción, que especifica que la transmisión de video debe copiarse, en lugar de transcodificarse. El comando completo es:
Creará una carpeta llamada "mp3" dentro de la que contiene los archivos flac y, dentro de la carpeta mp3, guardará archivos mp3 relativos con una tasa de bits de 320 kbps, sin mantener la extensión de archivo anterior en el nombre.
:rparece ser un zshmodificador, que no funciona en bash. En Bash puedes reemplazarlo "${file:r}.mp3"con "${file%.flac}.mp3".
mivk
para mostrar solo el nombre de archivo del archivo, en el uso de bash${file%.*}
Evhz
2
Sé que esto no se preguntó, pero considerando que una de las razones por las que se hace (al menos eso es lo que quería hacer) es para que la música se pueda importar a Apple iTunes que no es compatible con FLAC. En tal caso, tiene más sentido convertir FLAC al formato sin pérdidas de Apple, m4a. Utilicé este comando para convertir todos los archivos en la carpeta actual, conservando tamaños de archivo similares.
Opción 'nombre' no reconocida. Error al dividir la lista de argumentos: opción no encontrada
MonsterMMORPG
@MonsterMMORPG probablemente te perdiste escribir el. después del comando de búsqueda. Los . le dice a find que busque en la carpeta actual, y -name le dice que busque nombres de archivo coincidentes.
Dhiraj Gupta
2
Este script flac2mp3.sh se utiliza ffmpegpara convertir un árbol de carpetas de archivos FLAC en otro árbol de carpetas de archivos MP3. Se incluye la portada, cuando está presente. Puede establecer una CORESvariable para crear trabajos en segundo plano para convertir varios archivos a la vez.
ffmpeg
preguntas sobre el uso de cli en Super User . Stack Overflow es solo para preguntas relacionadas con la programación. Además, FLAC admite oficialmente solo los comentarios de Vorbis , así que supongo que desea convertir a ID3v2 en lugar de "mantener".Respuestas:
El siguiente comando mantiene alta calidad en .mp3 (320 kbps) y los metadatos del archivo .flac se convierten al formato ID3v2, que se puede incluir en archivos .mp3:
fuente
ffmpeg
3.2 copia automáticamente metadatos en ID3v2 desde FLAC sin necesidad de especificar-map_metadata 0 -id3v2_version 3
, aunque no copia en etiquetas ID3v1. Utilizo una herramienta separada para eso.Respuesta perfecta arriba. Lo uso junto con find para agregar todos los archivos FLAC en un subárbol a iTunes con este comando
Para agregar automáticamente los archivos resultantes a iTunes, obtenga el directorio de importación de iTunes con
resultado, por ejemplo
Entonces ejecuta, por ejemplo
Para agregar automáticamente todas las pistas convertidas a iTunes.
fuente
Si quieres ahorrar un poco de espacio, prueba la recomendación de hydrogenaud.io :
Fuente: http://wiki.hydrogenaud.io/index.php?title=LAME
Si desea usar esta opción en ffmpeg, debe usar el
-q:a 0
alias.Fuente: https://trac.ffmpeg.org/wiki/Encode/MP3
Si también desea metaetiquetas ID3v1, debe agregar el
-write_id3v1 1
parámetro.Entonces mi comando final es:
fuente
Estaba probando el siguiente comando para convertir el
infile.flac
archivo aoutfile.mp3
:A partir de Ubuntu 16.04, el comando anterior parece copiar (¿la mayoría? ¿Todos?) Los metadatos.
-q:a 0
indicaffmpeg
que utilice VBR de la más alta calidad.Sin embargo,
ffmpeg
estaba transcodificando la carátula de mi álbum dejpeg
apng
, lo que aumentó el tamaño de la carátula.(Supongo que la conversión anterior tiene sentido dado cómo
ffmpeg
funciona ).Después de investigar un poco, encontré la
-c:v copy
opción, que especifica que la transmisión de video debe copiarse, en lugar de transcodificarse. El comando completo es:El comando anterior da como resultado:
fuente
Para convertir de forma recursiva en mp3 todos los archivos flac en carpetas anidadas, utilicé este comando:
Creará una carpeta llamada "mp3" dentro de la que contiene los archivos flac y, dentro de la carpeta mp3, guardará archivos mp3 relativos con una tasa de bits de 320 kbps, sin mantener la extensión de archivo anterior en el nombre.
fuente
Una línea para convertir todos los
.flac
archivos.mp3
en un solo directorio, manteniendo la mayoría de los metadatos:for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(Nota:
${file:r}
elimina la extensión de la ruta de archivo dada)fuente
$file
como"$file"
.:r
parece ser unzsh
modificador, que no funciona enbash
. En Bash puedes reemplazarlo"${file:r}.mp3"
con"${file%.flac}.mp3"
.${file%.*}
Sé que esto no se preguntó, pero considerando que una de las razones por las que se hace (al menos eso es lo que quería hacer) es para que la música se pueda importar a Apple iTunes que no es compatible con FLAC. En tal caso, tiene más sentido convertir FLAC al formato sin pérdidas de Apple, m4a. Utilicé este comando para convertir todos los archivos en la carpeta actual, conservando tamaños de archivo similares.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
fuente
Este script flac2mp3.sh se utiliza
ffmpeg
para convertir un árbol de carpetas de archivos FLAC en otro árbol de carpetas de archivos MP3. Se incluye la portada, cuando está presente. Puede establecer unaCORES
variable para crear trabajos en segundo plano para convertir varios archivos a la vez.fuente