28 votos

¿Cómo puedo utilizar ffmpeg para convertir archivos audibles?

Estoy ejecutando ffmpeg v2.8.1 de Homebrew, y tratando de convertir Audible pero hay algún truco que se me escapa.

Este comando produce esta salida de error.

ffmpeg -activation_bytes 1CEB00DA -i Volume1.aax -vn -c:a copy output.mp4

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] [aax] file checksum == d72f1f04e3c73d0bc68e742db1bc69b58dc3a500
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] [aax] mismatch in checksums!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] error reading header
Volume1.aax: Invalid data found when processing input

Sé que el archivo está bien, porque se reproduce en iTunes. Tengo la imagen del archivo / arte de la cubierta incrustado en él también,

En la documentación de ffmpeg, leo Los archivos AAX de Audible son archivos M4B codificados y se pueden descifrar especificando un secreto de activación de 4 bytes.

Presumo -probablemente de forma incorrecta- que el que se ha dado está bien. Si no es así, ¿cómo se puede encontrar ese secreto.

49voto

Matt B Puntos 41

Primero ejecuta estos comandos:

brew install chromedriver ffmpeg
sudo easy_install pip
pip install selenium requests
git clone https://github.com/inAudible-NG/audible-activator
cd audible-activator
sed -i '' 's,chromedriver_path = "./chromedriver",chromedriver_path = "/usr/local/bin/chromedriver",' audible-activator.py
./audible-activator.py

A continuación, introduzca su nombre de usuario y contraseña de Audible y espere un rato a que se imprima la clave de activación de ocho caracteres.

Si no se ejecuta el sed que cambia el valor del chromedriver_path variable, ./audible-activator.py resulta en un error como 'chromedriver' executable needs to be in PATH aunque chromedriver está en el camino o en el audible-activator directorio. Si su sed es GNU sed , reemplazar sed -i '' con sed -i .

Después de eso, ejecute un comando como este:

ffmpeg -activation_bytes youractivationkey -i input.aax -c copy output.m4b

(He editado el comando anterior basándome en los comentarios de LiWang y marcus erronius para sustituir output.m4a;mv output.m4{a,b} con output.m4b y para reemplazar -vn -c:v copy con -c copy .)

Si intenta utilizar el ffmpeg anterior con un aa en lugar de un archivo aax resulta en un error como Option activation_bytes not found . Para descargar un libro de Audible como aax en lugar de aa En la vista para la descarga de un libro, elija "Enhanced" en el menú desplegable "Audio Quality".

aax los archivos están encriptados mp4 / m4a / m4b archivos para que el ffmpeg no recodifica el audio y conserva los metadatos, como los capítulos. mp4 , m4a y m4b son extensiones de nombre de archivo alternativas para el formato de contenedor MPEG-4 Parte 14. El m4a y m4b Las extensiones fueron introducidas originalmente por Apple. Una diferencia entre el m4a y m4b es que la opción de recordar la posición de reproducción anterior en iTunes está activada por defecto para los archivos con una m4b pero no para los archivos con una extensión m4a iTunes también muestra los archivos con una extensión m4b en los audiolibros por defecto.

Las versiones antiguas de iTunes no tenían la casilla para activar la memoria de la posición de reproducción anterior, pero la memoria de la posición de reproducción anterior siempre estaba activada para los archivos con una m4b extensión, por lo que incluso Wikipedia sigue afirmando incorrectamente que "un .m4a archivo de audio no puede "marcar" (recordar el último punto de escucha), mientras que .m4b archivos de extensión puede". (Aunque no sé si todavía hay otros reproductores multimedia que se comportan como las antiguas versiones de iTunes en ese sentido).

La IU para el m4b la extensión es com.apple.protected-mpeg-4-audio y Finder muestra el tipo de todo m4b como "audio MPEG-4 protegido" aunque todos los archivos con un m4b no tienen protección anticopia.

10voto

Stark Puntos 91

Esto le permitirá obtener su secreto de activación:

https://github.com/inAudible-NG/audible-activator

6voto

Probé la respuesta de user4669748, y me encontré con algunas cosas que vale la pena señalar, y descubrí una solución que consiguió que las cosas funcionaran para mí:

  1. audible-activator.py requiere Python 2.7; falla con Python 3.
  2. Después de iniciarlo, la ventana de Chrome aparece en la pantalla y empiezas a ver la actividad de la GUI, y un inicio de sesión exitoso en Audible.
  3. Poco después de iniciar la sesión, la actividad del navegador parece colgarse, con Waiting for px.owneriq.net constantemente en la barra de estado inferior.
  4. Después de 5 minutos, tuve una TimeoutException:

    [*] Player ID is 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
    Traceback (most recent call last):
      File "./audible-activator.py", line 151, in <module>
        fetch_activation_bytes(username, password, options)
      File "./audible-activator.py", line 74, in fetch_activation_bytes
        search_box.submit()
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 88, in submit
        self._execute(Command.SUBMIT_ELEMENT)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 494, in _execute
        return self._parent.execute(command, params)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
        self.error_handler.check_response(response)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.TimeoutException: Message: timeout: cannot determine loading status
    from timeout: Timed out receiving message from renderer: -0.222
      (Session info: chrome=54.0.2840.98)
      (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.0 x86_64)

En esto, estaba atascado. Sin embargo, pensando que px.owneriq.net es algún tipo de anuncio o sitio de seguimiento, traté de "desactivar temporalmente" añadiendo a /etc/hosts con una dirección IP no válida, por ejemplo

0.0.0.0 px.owneriq.net

(Esta fue una táctica sugerida por un amigo para detener los anuncios en el navegador).

Después de esta adición a /etc/hosts , vuelva a ejecutar el programa. Se ejecutó hasta el final en 30 segundos.

Se imprimió una clave de activación de 4 bytes en la pantalla, y funcionó perfectamente con ffmpeg como se describe en la respuesta de user4669748.

A continuación, restauré /etc/hosts a su contenido original.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X