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=-dclame - $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/flac2mp3y 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}m4apara 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 1corresponde a-V 1cojo.-acodec libfaacconvertiría los archivos a AAC:fuente
Tomé lo que ustedes tenían, pero luego lo hice correr aún más rápido usando
xargspara 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
ffmpegylameya 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
ffmpegylame:Una vez hecho esto, está listo para ejecutar este script. Este script buscará archivos FLAC en el directorio,
path/to/FLAC/filespero 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.
grepcomandos para el análisis de etiquetas (usando FFprobe que se instala con FFmpeg) no distinguen entre mayúsculas y minúsculas, utilizando la-iopción para hacerlogrep -i.cutcomando 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”.sedla que se deshace de los ceros iniciales:sed 's/^0*//'.-f wavy 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_s16leque es básicamente salida RAW; perfecto para canalizar audio a otro proceso como este.-ropción.--tt,--ta,--tl,--tny--tgopciones 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,--tny--tgopciones funciona mejor; Todos los metadatos se escriben en su lugar, por lo que es necesario generar un archivo duplicado.fuente