¿Cuáles son las configuraciones de afconvert para la configuración de codificación AAC de iTunes Plus?

El reto

Me gustaría convertir una gran colección de archivos WAV a AAC usando la configuración "iTunes Plus" en iTunes. iTunes describe esta configuración como:

128 kbps (mono) / 256 kbps (estéreo), 44.100 kHz, VBR, optimizado para MMX/SSE2.

Me gustaría automatizar este proceso de importación.

Prueba y error

La afconvertherramienta de línea de comandos puede convertir entre formatos de archivos de audio. He probado algunas configuraciones y lo más cercano que pude conseguir es:

afconvert -v -d aac -b 256000 -f m4af -q 127 -s 2 --soundcheck-generate input.wav output.m4a

Entonces: sea detallado ( -v), use el formato de datos AAC ( -d aac), codifique a 256 kbps ( -b 256000), almacene en el formato de archivo de audio Apple MPEG-4 ( -f m4af), use la calidad más alta ( -q 127), use VBR restringido ( -s 2) y agregue SoundCheck datos al archivo.

También he creado un m4aarchivo usando la configuración de iTunes Plus.

El m4aarchivo creado por afconverttiene aproximadamente el mismo tamaño que el archivo de iTunes; solo 65536 bytes más pequeño.

Resultados

Usando la afinfoherramienta, comparé el archivo generado por iTunes con el archivo generado por afconvert. Hay dos diferencias en la afinfosalida:

  1. El archivo generado por iTunes tiene un audio data file offset131072, el de afconvert65536. Esto explica la diferencia en el tamaño del archivo.
  2. De alguna manera, el archivo generado por iTunes tiene sound checkvalores diferentes al convertido por afconvert:

    • archivo itunes:

      sc ave perceived power coeff             343 407
      sc max perceived power coeff             6873 8940
      sc peak amplitude msec                   154389 194861
      sc max perceived power msec              194025 194025
      sc peak amplitude                        31129 30928
      
    • afconvertexpediente:

      sc ave perceived power coeff             341 388
      sc max perceived power coeff             6087 4157
      sc peak amplitude msec                   212509 152323
      sc max perceived power msec              215481 185017
      sc peak amplitude                        31024 29857
      

    Especialmente los valores sc peak amplitude msecy sc max perceived power msecdifieren bastante. Estos son exactamente los mismos archivos de entrada, ¿qué podría causar esta diferencia?

Pregunta

¿Hay alguna manera de obtener resultados aún más parecidos a la configuración de "iTunes Plus"?

Respuestas (2)

Tenía exactamente la misma obsesión y terminé creando un importador de FLAC a iTunes que decodifica archivos FLAC a WAV y los importa a iTunes usando el propio codificador de iTunes: https://github.com/cbguder/FLAC2iTunes

Debería ser bastante fácil modificar FLAC2iTunes para admitir la entrada WAV directa.

En cuanto a los valores de prueba de sonido, comparé iTunes, XLD y afconvert codificando archivos WAV a AAC y decodificándolos a WAV y comparando los datos de audio decodificados. También comparé las salidas de afinfo para los archivos codificados. Si bien los valores de comprobación de sonido son diferentes para cada archivo, los WAV decodificados son exactamente los mismos, por lo que incluso si usa XLD o afconvert, es probable que los archivos resultantes suenen exactamente igual.

Para afconvert, utilicé los parámetros sugeridos por Apple en la guía " Mastered for iTunes ", con un archivo CAF intermedio:

afconvert source.wav intermediate.caf -d 0 -f caff --soundcheck-generate
afconvert intermediate.caf -d aac -f m4af -u pgcm 2 --soundcheck-read -b 256000 -q 127 -s 2 final.m4a

En las versiones más recientes de afconvert:

afconvert intermediate.caf -d aac -f m4af -ue pgcm 2 --soundcheck-read -b 256000 -q 127 -s 2 final.m4a

Para XLD, utilicé esta configuración:

Format: MPEG-4 AAC
Mode: VBR (Constrained)
Encoder Quality: Max
Sample Rate: Auto
Target bitrate: 256 kbps
Add gapless information for iTunes: checked
Write accurate bitrate information: checked
Gracias, no había intentado descomprimir los dos archivos AAC y comparar los dos archivos decodificados. Todavía no estoy seguro de por qué los sound checkvalores serían diferentes y qué significan realmente. Aceptaré tu respuesta. (Y: de hecho, también tengo muchos archivos FLAC ;-))
OSX 11.4 y ya no puedo agregar la propiedad de usuario -u pgcm 2para caf> m4a: da como resultado un error: Couldn't set audio converter property ('prop'). ¿Hay una nueva configuración o nueva documentación? Los documentos de Apple aún lo recomiendan: images.apple.com/ca/itunes/mastered-for-itunes/docs/…

Puede usar el droplet "Masterización para iTunes" disponible en el sitio web de Apple.

http://www.apple.com/itunes/mastered-for-itunes/

Necesitaba modificar el script para que se ejecutara en Yosemite/El Capitan, pero es bastante trivial:

  • Muestra el contenido del paquete de la aplicación en Finder (Aplicaciones/Utilidades/Master for iTunes Droplet).
  • Navegue a Contenidos/ Recursos/ Guiones
  • Abrir main.scpt
  • Actualice las líneas de comparación de la versión del sistema con "10.10" (hay dos líneas que necesitan este cambio):

    if systemVersion is less than "10.10" then

  • Guardar main.scpt

Ahora puede simplemente arrastrar y soltar sus archivos FLAC o WAV en el droplet y creará un archivo CAFF intermedio seguido del archivo iTunes Plus AAC.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Para aquellos interesados, parece que las subrutinas afconvert usan los siguientes comandos (tenga en cuenta que estos se extraen del contexto del código y no se ejecutarán tal cual):

  • WAV/FLAC a CAFF:

    • si el sampleRate es mayor que "44100":

    afconvert -d LEF32@44100 -f caff --soundcheck-generate --src-complexity bats -r 127

    • más

    afconvert -d 0 -f caff --soundcheck-generate

  • CAFF a AAC

    afconvert -d aac -f m4af -u pgcm 2 --soundcheck-read -b 256000 -q 127 -s 2