28 votes

Comment utiliser ffmpeg pour convertir des fichiers audibles ?

J'utilise ffmpeg v2.8.1 depuis Homebrew, et j'essaie de convertir Audible mais il y a un truc que je manque.

Cette commande produit ce message d'erreur.

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

Je sais que le fichier est correct, car il est lu dans iTunes. L'image du fichier et la couverture sont également intégrées au fichier,

Dans la documentation de ffmpeg, j'ai lu que Les fichiers Audible AAX sont des fichiers M4B cryptés. et ils peuvent être décryptés en spécifiant un secret d'activation de 4 octets.

Je présume - probablement à tort - que celui qui est donné est correct. Si ce n'est pas le cas, comment trouver ce secret ?

2 votes

49voto

nisetama Points 894

Exécutez d'abord ces commandes :

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

Saisissez ensuite votre nom d'utilisateur et votre mot de passe Audible et attendez un moment pour que la clé d'activation de huit caractères soit imprimée.

Si vous n'exécutez pas le sed qui modifie la valeur de l'option chromedriver_path variable, ./audible-activator.py donne lieu à une erreur du type 'chromedriver' executable needs to be in PATH même si chromedriver est sur le chemin ou dans le audible-activator répertoire. Si votre sed est GNU sed , remplacer sed -i '' con sed -i .

Après cela, lancez une commande comme celle-ci :

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

(J'ai modifié la commande ci-dessus sur la base des commentaires de LiWang et marcus erronius pour remplacer output.m4a;mv output.m4{a,b} con output.m4b et de remplacer -vn -c:v copy con -c copy .)

Si vous essayez d'utiliser le ffmpeg ci-dessus avec un aa au lieu d'un fichier aax il en résulte une erreur du type Option activation_bytes not found . Pour télécharger un livre d'Audible en tant que aax au lieu de aa Pour télécharger un livre, choisissez "Enhanced" dans la liste déroulante "Audio Quality" de la fenêtre de téléchargement.

aax les fichiers sont cryptés mp4 / m4a / m4b afin que le ffmpeg La commande ci-dessus ne ré-encode pas l'audio et préserve les métadonnées telles que les chapitres. mp4 , m4a y m4b sont des extensions de nom de fichier alternatives pour le format de conteneur MPEG-4 Partie 14. Le site m4a y m4b Les extensions ont été introduites à l'origine par Apple. Une différence entre les m4a y m4b est que l'option permettant de mémoriser la position de lecture précédente dans iTunes est activée par défaut pour les fichiers ayant un numéro d'identification de type m4b mais pas pour les fichiers avec une extension m4a iTunes affiche également les fichiers avec une extension m4b sous les livres audio par défaut.

Les anciennes versions d'iTunes ne disposaient pas de la case à cocher permettant d'activer la mémorisation de la position de lecture précédente, mais la mémorisation de la position de lecture précédente était toujours activée pour les fichiers ayant un numéro de série m4b de sorte que même Wikipédia affirme toujours de manière incorrecte qu'"un .m4a ne peut pas "marquer" (se souvenir du dernier endroit d'écoute), alors que .m4b les fichiers d'extension le peuvent". (Même si je ne sais pas s'il existe encore d'autres lecteurs multimédias qui se comportent comme les anciennes versions d'iTunes à cet égard).

L'UTI pour le m4b L'extension est com.apple.protected-mpeg-4-audio et le Finder affiche le type de tous les m4b en tant que "MPEG-4 audio protégé", même si tous les fichiers avec un nom de fichier m4b n'ont pas de protection contre la copie.

0 votes

J'utilise .aax et j'obtiens l'erreur : Unrecognized option 'activation_bytes'. . Des idées ? Audible a-t-il changé de format l'année dernière ?

3 votes

Une raison pour convertir en *.m4a et ensuite renommer en tant que *.m4b ? Pourquoi ne pas simplement le faire : ffmpeg -activation_bytes youractivationkey -i input.aax -vn -c:a copy output.m4b ?

1 votes

@LiWang Cela entraînait une erreur avec les anciennes versions de ffmpeg, mais cela ne semble plus être le cas.

10voto

Stark Points 101

Vous obtiendrez ainsi votre secret d'activation :

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

1 votes

J'ai utilisé ce script pour faire la conversion réelle. Il convient également de noter que vous devez installer selenium y requests via pip o easy_install et aussi de télécharger et d'extraire chromedriver dans les audible-activator pour qu'il fonctionne. Cette information est fournie dans audible-activator mais il est utile de le savoir à l'avance :)

0 votes

Merci, @intuited ; ce script est en or. J'ai eu besoin d'un léger ajustement pour utiliser GNU grep (la fonction ggrep installé avec brew install grep ) sur MacOS, mais a fait un excellent travail après cela.

6voto

devopsmikey Points 61

J'ai essayé la réponse de l'utilisateur 4669748, et j'ai rencontré quelques problèmes à noter, et j'ai découvert une solution qui m'a permis de fonctionner :

  1. audible-activator.py nécessite Python 2.7 ; il échoue avec Python 3.
  2. Après le démarrage, la fenêtre Chrome s'affiche à l'écran et vous commencez à voir l'activité de l'interface graphique, ainsi qu'une connexion réussie à Audible.
  3. Peu de temps après la connexion, l'activité du navigateur semble s'interrompre. Waiting for px.owneriq.net constamment affiché dans la barre d'état inférieure.
  4. Après 5 minutes, j'ai eu une 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)

A ce moment-là, j'étais bloqué. Cependant, en pensant que px.owneriq.net est une sorte de publicité ou de site de suivi, j'ai essayé de le "désactiver temporairement" en ajoutant à /etc/hosts avec une adresse IP invalide, par exemple.

0.0.0.0 px.owneriq.net

(C'est une tactique suggérée par un ami pour arrêter les publicités dans le navigateur).

Après cet ajout à /etc/hosts et relancez le programme. Il s'est exécuté en 30 secondes.

Une clé d'activation de 4 octets a été imprimée à l'écran, et a fonctionné parfaitement avec ffmpeg comme décrit dans la réponse de l'utilisateur4669748.

J'ai ensuite restauré /etc/hosts à son contenu original.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X