Le blogouille de Caro et Nico

Entre famille, sport et aventures !

Résoudre l’erreur CompressorKit -1 de iMovie sur MacOS.

Bon voilà iMovie plante lorsque l’on lance la production finale d’un film, avec l’erreur :

L’opération n’a pas pu s’achever. (com.apple.Compressor.CompressorKit.ErrorDomain erreur -1).

Ma configuration : OS El Capitan 10.11.6, iMovie 10.1.6

Vérifiez d’abord avec la console ci-dessous qu’il s’agit bien de la même cause que celle-ci, car il y a aussi d’autres erreurs possibles (du même type sur les compresseurs), que j’ai pu lire sur les forums d’internet. Certaines personnes recommandent de désinstaller puis de réinstaller iMovie, ou encore de redémarrer en mode « safe boot », en maintenant la touche SHIFT enfoncée lors du redémarrage, pour purger le cache. Chez moi cela n’a pas réglé le problème car la panne était plus profonde.

Quand on regarde de plus près, au moyen de la console, on localise un message d’erreur de iMovie. Démarrez Utilitaires / Console / et recherchez iMovie. Il y a un message qui apparaît lorsque le rendu final d’un film est lancé, en gros iMovie va chercher les bibliothèques de compresseurs pour comprimer les films, et plante sur la bibliothèque MobileDevice.framework

Library not loaded: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice
/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice: mach-o, but wrong architecture

Celle ci se trouve dans le dossier

/System/Library/PrivateFrameworks/MobileDevice.framework/

iMovie la trouve, mais a une erreur d’architecture (mach-o / wrong architecture). En regardant de plus près, on peu depuis le terminal utilisez la commande lipo -info (il faut installer le package de développement, ce qui se fait la première fois qu’on lance la commande lipo).

lipo -info /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice 
Architectures in the fat file: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice are: x86_64  

Et c’est là que le bat blesse. Les nouvelles bibliothèques MobileDevice qui viennent avec les mises à jour de iTunes ne semblent qu’en 64Bits. Les anciennes étaient compilées pour deux architectures, à la fois 32bits (« i386 ») et 64bits (« x86_64 »). Et il semblerait que le vieux iMovie ne soit qu’en 32bits. L’astuce c’est de récupérer des bibliothèques plus anciennes, démarrer en mode de récupération, utiliser le terminal et remplacer à la main (tout le dossier MobileDevice.framework) avec une version plus ancienne :

Récupérez le fichier Zip ci dessus, et le dézipper sur le bureau par exemple. Vous devriez avoir un dossier MobileDevice.framework sur le bureau maintenant.

Pour redémarrer en mode de récupération, éteindre son Mac, puis démarrer tout en appuyant sur cmd (⌘) + R

Là il semble y avoir deux options, en fonction de comment votre mac a été installé. Soit il y a un environment de récupération intégré, et il boot directement, soit il n’y en a pas (mon cas) et l’on télécharge en environ 5mn une image bootable de chez Apple automatiquement par internet.

Ensuite depuis cet environnement de récupération, ouvrir un terminal (Utilities / Terminal).

Puis naviguer en ligne de commande pour renommer/déplacer la librairie qui pose problème. Il faut d’abord naviguer jusqu’au disque système en lancant les commandes suivantes (faire entrée à chaque fois).

cd /
cd Volumes
cd NOMDUVOLUME_DE_VOTRE_MAC (appuyez sur la touche TAB pour auto compléter la ligne, vous pouvez appuyer plusieurs fois)

Puis descendre dans le dossier des Librairies

cd System
cd Library
cd PrivateFrameworks

et déplacer la librairie défectueuse vers le dossier temporaire deux niveaux plus haut.

mv MobileDevice.framework /../../tmp

Ensuite on déplace le dossier de la bonne librairie du bureau vers le dossier système

cd ../../..
cd Users
cd NomUser    (A remplacer par votre nom du user mac)
cd Desktop
mv MobileDevice.framework ../../../System/Library/PrivateFrameworks/

Ensuite on redémarre, puis on vérifie par le terminal que la librairie est bien présente et maintenant en 32 et 64 Bits. Quand on appelle la commande lipo -info depuis un terminal, on a :

Architectures in the fat file: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice are: i386 x86_64 

On relance iMovie, et çà fonctionne !

Bon le risque c’est qu’à la prochaine mise à jour de iTunes / OS, les bibliothèques MobileDevice soient à nouveau écrasées, mais vous saurez identifier et résoudre le problème !