Durante mucho tiempo he estado usando una técnica relativamente torpe que involucra a Audacity con un complemento LAME. Esto está bien, supongo, pero el atractivo del enfoque de Terminal es que puedo ser un poco más fino con mi [options]
y tal vez usar binarios más actualizados.
Además, mi MacBook está envejeciendo un poco ahora y si puedo deshacerme de una GUI innecesaria, mucho mejor.
Gracias por adelantado.
Respuestas:
Convertir un solo archivo sin preservar etiquetas
--decode --stdout
=-dc
lame - $outfile
= entrada de STDIN--preset extreme
= ~ 245 kbit / s VBRUn script de shell que conserva algunas etiquetas ID3
Para usar el script, simplemente guárdelo en algún lugar
~/bin/flac2mp3
y hágalo ejecutable conchmod +x ~/bin/flac2mp3
.Esto convertiría todos los archivos flac en su carpeta Música:
O un poco más rápido, ya que solo llama a flac2mp3 una vez:
fuente
${file%.flac}.mp3
¡es increíble! Anteriormente estaba usando${x:: ${#x}-3}m4a
para cambiar el nombre de archivo de la canción de .wav a .m4a. Impresionante ver una forma que parece un poco más fácil.!/bin/sh file="$1" outfile=${file%.flac}.mp3 eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/") flac -cd "$file" | lame --preset standard \ --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \ --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \ - "$outfile"
ffmpeg conservaría las etiquetas (pero no la portada) de forma predeterminada.
-aq 1
corresponde a-V 1
cojo.-acodec libfaac
convertiría los archivos a AAC:fuente
Tomé lo que ustedes tenían, pero luego lo hice correr aún más rápido usando
xargs
para paralelizar los trabajos.Entonces este es el script de arriba / usr / local / bin / flac2mp3
y heres algunas estadísticas para la aceleración del rendimiento usando paralelismo.
puede ver que también utilizó mis CPU de manera más efectiva, tengo un Intel i7, por lo que 8 es probablemente la cantidad correcta de procesos.
fuente
Encontré este hilo mientras intentaba hacer una codificación directa de MP3 desde archivos fuente FLAC. La respuesta de Boehj proporciona una opción de script decente, pero personalmente prefiero usar FFmpeg, por lo que este es el script Bash que se me ocurrió para manejar esta tarea. Probado y funciona muy bien en macOS Sierra (10.12.2).
Gratificaciones: Usted debe tener
ffmpeg
ylame
ya instalado en su Mac. La forma más fácil de hacerlo es a través de Homebrew. Primero asegúrese de tener Homebrew instalado así:Luego ejecute este comando para instalar
ffmpeg
ylame
:Una vez hecho esto, está listo para ejecutar este script. Este script buscará archivos FLAC en el directorio,
path/to/FLAC/files
pero eso se puede cambiar para que simplemente se encuentre.
si los archivos FLAC están en el mismo directorio en el que está ejecutando este script. Cuando se ejecute, creará unmp3/
subdirectorio donde estarán todos los archivos MP3. metido.Algunas notas sobre cosas que aprendí "The Hard Way ™" para que otros puedan beneficiarse de lo que hice de manera diferente en este script en comparación con otros en Internet.
grep
comandos para el análisis de etiquetas (usando FFprobe que se instala con FFmpeg) no distinguen entre mayúsculas y minúsculas, utilizando la-i
opción para hacerlogrep -i
.cut
comando ahora se limita a dividir la salida solo en función del primero=
en un nombre de etiqueta con la-f 2-
opción que hace el comandocut -d '=' -f 2-
. Por ejemplo, Pavimento tiene una canción titulada “5-4 = Unidad” y si solo se seleccionara el segundo fragmento por corte, ese título se habría truncado a “5-4”.sed
la que se deshace de los ceros iniciales:sed 's/^0*//'
.-f wav
y eso realmente comprimiría la salida de FFmpeg, lo que no tiene sentido en una configuración de tubería donde LAME la va a volver a codificar. En cambio, la salida aquí se establece en-f s16le -acodec pcm_s16le
que es básicamente salida RAW; perfecto para canalizar audio a otro proceso como este.-r
opción.--tt
,--ta
,--tl
,--tn
y--tg
opciones de etiquetas ID3v2 para LAME. Cuando el audio se transmite / transmite de un proceso a LAME, se pierden los metadatos del archivo fuente. Una opción sugerida es conseguir FFmpeg para guardar los metadatos de un archivo de texto mediante el establecimiento de la opción con-f ffmetadata "[metadata filename here]"
y ejecutando FFmpeg de nuevo con el algo como esto:-i "[metadata filename here]" -map_metadata 1 -c:a copy [destination mp3 file] id3v2_version 3 -write_id3v1 1
. Eso funciona, pero tenga en cuenta el requisito de un archivo de destino. Parece que FFmpeg solo importa metadatos cuando puede copiar el archivo, lo que parece un proceso muy derrochador. Usando FFprobe para obtener valores y luego colocarlos en LAME con--tt
,--ta
,--tl
,--tn
y--tg
opciones funciona mejor; Todos los metadatos se escriben en su lugar, por lo que es necesario generar un archivo duplicado.fuente