2011-05-09 7 views
6

J'ai une question très basique concernant Android et ffmpeg. J'ai obtenu ffmpeg de http://bambuser.com/opensource et a pu le compiler pour ARM. Les résultats sont les fichiers binaires (ffmpeg) ainsi que plusieurs fichiers libsomething.so.Comment utiliser ffmpeg sur Android?

Ma question est: Est-ce suffisant pour décoder les vidéos? Comment puis-je utiliser ffmpeg alors?

Pour charger la bibliothèque, j'ai:

static { 
    System.load("/data/data/com.package/lib/libavcodec.so"); 
} 

Il charge très bien. Mais alors? Plus d'explications: J'ai vu d'autres projets où les gens avaient leur source ffmpeg dans un répertoire JNI dans le projet. Ils ont également créé des fichiers Android.mk et du code C avec. Aurais-je besoin de ça aussi? Pourquoi créer d'abord les fichiers .so, puis copier à nouveau le code source ffmpeg?

Je sais que le NDK et comment cela devrait fonctionner mais je ne l'ai jamais vu un exemple de la façon dont on fait appel à des fonctions de ffmpeg utiliser, parce que les gens semblent se cacher leur mise en œuvre (qui est une sorte de compréhensible) mais ne donnant même pas de pointeurs ou d'exemples utiles.

Disons que je voulais décoder un fichier vidéo. Quel genre de méthodes natives aurais-je besoin de mettre en œuvre? Comment puis-je exécuter le projet? Quels types de données doivent être transmis? etc. Il y a certainement quelques personnes ici qui ont au moins fait cela, je le sais en cherchant des heures et des heures.

+0

Comment avez-vous compilé ffmpeg téléchargé à partir du lien http://bambuser.com/opensource –

+0

@Swathi Ce n'était pas trop difficile à faire. Suivez simplement les instructions qui se trouvent dans ce dossier dans le document 'INSTALL'. – slhck

+0

merci pour la réponse rapide :) Je le télécharge, je vais suivre les instructions à l'intérieur. Je travaille sur Windows, a-t-il besoin d'autres configurations? –

Répondre

6

Pour votre première question;

La construction juste ne suffit pas pour l'utilisation correcte des bibliothèques ffmpeg. Vous devriez également placer ces fichiers dans le bon ordre. Parce que ces fichiers NEDED NEDED autres bibliothèques dans le temps de liaison. Vous pouvez afficher les informations d'en-tête de ce fichier, en utilisant.

objdump -x libavcodec.so | grep NEEDED 

Vous avez donc besoin d'envelopper ces fichiers via Android.mk. Vous pouvez vérifier cela link.

La seconde;

Vous avez seulement besoin des fichiers d'en-tête du projet ffmpeg. L'implémentation sera liée à partir des so bibliothèques. C'est peut-être parce que les développeurs n'ont pas pris la peine de filtrer les fichiers d'en-tête.

Et le dernier; Vos pensées semblent correctes pour l'instant, la plupart des développeurs actuels ont du mal à utiliser ffmpeg mais ils manquent de documentation et de codes d'échantillons.

+0

Merci pour les informations ... Je construis ma librairie ffmpeg et j'ai donc des fichiers ..je veux développer une application qui compresse la taille du fichier vidéo ., alors que dois-je faire .. je veux dire quelles sont les méthodes disponibles pour compresser des vidéos en ffmpeg pouvez-vous m'aider? –

+0

@ Swap-IOS-Android je suis confronté au même problème, avez-vous eu une solution? –

+0

@ParagChauhan non j'ai utilisé javac lib au lieu de ffmpeg pour convertir mes vidéos –