10
votes

Utilisation de la bibliothèque FFMPEG avec iPhone SDK pour le codage vidéo

J'ai besoin d'encoder plusieurs images tournées par la caméra iPhone dans un fichier vidéo MP4 et je sais que FFMPEG peut le faire (l'application TimLelapser et les réelmoments le font déjà). Je prévois d'utiliser cela dans mon application IMOTION (disponible dans l'AppStore).

J'ai installé et compiler avec succès le FFMPEG pour l'iPhone SDK avec ce lien: http://lists.mplayerhq.hu/pipemermail/ffmpeg- Devel / 2009-octobre / 076618.html

Mais maintenant je suis coincé ici dans mon projet Xcode. Que dois-je faire à côté d'utiliser la bibliothèque FFMPEG pour le codage vidéo? La documentation Apple sur la bibliothèque externe en utilisant est très légère et je viens de trouver tout didacticiel sur le Web, ce qui explique comment faire cela.


4 commentaires

Assurez-vous de vous conformer à la LGPL si vous utilisez FFMPEG.


De plus, si vous envisagez de soumettre votre candidature à l'App Store, sachez les implications juridiques du logiciel de vente utilisant FFMPEG. Il peut porter atteinte aux brevets de votre juridiction ( ffmpeg.org/legal.html ). Cela peut également avoir une incidence sur votre capacité à obtenir l'approbation de l'App Store.


Oui, vous devrez libérer votre code source ou votre code d'objet pour votre application afin de vous conformer à la LGPL lors de l'utilisation de FFMPEG en tant que bibliothèque statique: HUYZING.COM/2009/08/24/...


IOS prend déjà en charge le codage H.264 avec du matériel intégré via la classe Avaisetwriter. Voir Stackoverflow.com/Questions/2563212/create-Video -in-iphone / ...


3 Réponses :


8
votes

Dans le menu du projet, sélectionnez Modifier la cible active "[...]".

Ensuite, dans le séparateur de construction, assurez-vous de disposer de toutes les configurations sélectionnées et de faire ce qui suit:

  • Recherchez "Chemins de recherche d'en-tête" et indiquez où se trouvent les en-têtes FFMPEG;
  • Recherchez des "chemins de recherche de bibliothèque" et indiquez où se trouvent les fichiers binaires de la bibliothèque statique compilée (fichiers .a).

    Cela devrait le faire, mais il y a une plus grande trucoche dans ce dernier. Vous pouvez ajouter une condition de construction aux «chemins de recherche de bibliothèque» afin que le compilateur utilise différents binaires pour différentes architectures, c'est-à-dire que vous pouvez compiler de manière transparente pour le simulateur et pour le périphérique. Instruction ci-dessous.

    • Avec la bibliothèque des chemins de recherche de la ligne sélectionnée, cliquez sur le bouton situé dans le coin inférieur gauche de la même fenêtre et choisissez Ajouter une condition de réglage de la construction;
    • où apparaît "n'importe quel SDK", sélectionnez "Tout simulateur d'OS iPhone" et indique le chemin d'accès aux fichiers binaires X86 FFMPEG.
    • Répétez les étapes ci-dessus en remplacement de «tout simulateur d'OS iPhone OS» avec «tout périphérique OS iPhone OS» et indiquez les fichiers binaires FFMPEG au bras.

      ci-dessous est un exemple de ce type de paramètres de construction.

      texte alt


0 commentaires

11
votes

Consultez le iframeExtractor projet sur github. Bien que ce ne soit pas exactement ce que vous recherchez, il a des scripts pour la construction des bibliothèques FFMPEG et le projet Xcode relie les bibliothèques.

Quelques informations supplémentaires dans ce blog Post:

http://www.codza.com/extracting-frames- de Films-On-iPhone


2 commentaires

J'ai essayé de le faire fonctionner, mais quand je le fais ./build_universal the "Lipo" -instructions dans le fichier semble échouer et je me retrouve sans les fichiers * .a. Je reçois cette erreur: lipo: type d'architecture spécifié (ARMV6) pour fichier (armv6 / libavcodec.a) ne correspond pas à ce que ce soit CPPUTYPE (16777223) et CPUSUBTYPE (3) (doit être CPUPUTYPE (12) et CPUSUBTYPE (6) ) pour chacune des commandes de lipo


Pour résoudre ce problème, suivez ce fil Stackoverflow.com/questions/6994151 / ...



4
votes

Une autre option serait d'utiliser FFMPEG sur un serveur. Envoyez les images sur le serveur et utilisez PHP W / FFMPEG pour convertir la vidéo. Avec cela, vous n'auriez pas à vous soucier de la compilation de FFMPEG sur l'appareil. Juste une pensée


0 commentaires