comment utiliser ijkplayer bibliothèque
Je vais utiliser ijkplayer github lien. J'ai téléchargé ce puis les importer dans eclipse par Fichier > Import > Général > Projets Existants dans l'espace de travail. Après que j'ai trois projets:
1.ijkmediaplayer ( library )
2.ijkmediawidget ( VideoView-like interface )
3.ijkmediademo ( Demo project )
Quand je lance ijkmediademo, Erreur s'est produite et le programme s'est écrasé. J'ai eu ces lignes d'erreur:
07-06 14:06:26.913: E/AndroidRuntime(11394): FATAL EXCEPTION: main
07-06 14:06:26.913: E/AndroidRuntime(11394): Process: tv.danmaku.ijk.media.demo, PID: 11394
07-06 14:06:26.913: E/AndroidRuntime(11394): java.lang.UnsatisfiedLinkError: Couldn't load ijkffmpeg from loader dalvik.system.PathClassLoader[dexPath=/data/app/tv.danmaku.ijk.media.demo-8.apk,libraryPath=/data/app-lib/tv.danmaku.ijk.media.demo-8]: findLibrary returned null
07-06 14:06:26.913: E/AndroidRuntime(11394): at java.lang.Runtime.loadLibrary(Runtime.java:358)
07-06 14:06:26.913: E/AndroidRuntime(11394): at java.lang.System.loadLibrary(System.java:526)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.player.IjkMediaPlayer$1.loadLibrary(IjkMediaPlayer.java:86)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.player.IjkMediaPlayer.loadLibrariesOnce(IjkMediaPlayer.java:95)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.player.IjkMediaPlayer.initPlayer(IjkMediaPlayer.java:137)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.player.IjkMediaPlayer.<init>(IjkMediaPlayer.java:133)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.player.IjkMediaPlayer.<init>(IjkMediaPlayer.java:125)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.widget.VideoView.openVideo(VideoView.java:244)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.widget.VideoView.access$30(VideoView.java:229)
07-06 14:06:26.913: E/AndroidRuntime(11394): at tv.danmaku.ijk.media.widget.VideoView$8.surfaceCreated(VideoView.java:502)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.SurfaceView.updateWindow(SurfaceView.java:602)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.SurfaceView.access$000(SurfaceView.java:94)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:183)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:888)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2173)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6567)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.Choreographer.doCallbacks(Choreographer.java:603)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.Choreographer.doFrame(Choreographer.java:573)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.os.Handler.handleCallback(Handler.java:733)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.os.Handler.dispatchMessage(Handler.java:95)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.os.Looper.loop(Looper.java:136)
07-06 14:06:26.913: E/AndroidRuntime(11394): at android.app.ActivityThread.main(ActivityThread.java:5476)
07-06 14:06:26.913: E/AndroidRuntime(11394): at java.lang.reflect.Method.invokeNative(Native Method)
07-06 14:06:26.913: E/AndroidRuntime(11394): at java.lang.reflect.Method.invoke(Method.java:515)
07-06 14:06:26.913: E/AndroidRuntime(11394): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
07-06 14:06:26.913: E/AndroidRuntime(11394): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
07-06 14:06:26.913: E/AndroidRuntime(11394): at dalvik.system.NativeStart.main(Native Method)
Il semble que le programme ne peut pas trouver quelques bibliothèques qui définit ici dans IjkMediaPlayer classe:
public static void loadLibrariesOnce(IjkLibLoader libLoader) {
synchronized (IjkMediaPlayer.class) {
if (!mIsLibLoaded) {
libLoader.loadLibrary("stlport_shared");
libLoader.loadLibrary("ijkffmpeg");
libLoader.loadLibrary("ijkutil");
libLoader.loadLibrary("ijkadk");
libLoader.loadLibrary("ijksdl");
libLoader.loadLibrary("ijkplayer");
mIsLibLoaded = true;
}
}
}
ce sont ces bibliothèques?
où sont ces bibliothèques? ( je ne pouvais pas les trouver dans les projets )
Comment résoudre ce problème?
OriginalL'auteur MAY3AM | 2014-07-06
Vous devez vous connecter pour publier un commentaire.
Semble que vous n'avez pas construit des bibliothèques qui sont exigées, vous devez le faire par vous-même.
Suivez les instructions en vertu de l'en-tête Construire Android sur la page ijkplayer lien github
Après le succès du processus de construction, vous allez obtenir plusieurs fichiers de bibliothèque (libijkffmpeg, libijkutil, libijkadk, libijksdl, libijkplayer) qui sera automatiquement mis en
ijkmediaplayer/libs
dossier.J'ai réussi à construire ijkplayer bibliothèques sous VirtualBox Ubuntu 12.04.
Et vous aurez à installer Android NDK.
$ ./compile-ffmpeg.sh all
il me montre "Vous devez définir ANDROID_NDK, ANDROID_SDK avant de commencer. Ils doivent pointer vers votre NDK et répertoires du SDK.\n" Comment résoudre ce problème? Dois-je créer un chemin dans les variables d'environnement?En fait, je ne suis pas sûr de savoir si vous serez en mesure de compiler ces libs sur Cygwin - au moins, je n'ai pas vu d'info à propos de succès de ffmpeg pour Android build en utilisant Cygwin. Si vous souhaitez utiliser Cygwin, vous devez créer les variables d'environnement pour ANDROID_NDK et ANDROID_SDK - mais comme je me souviens, ça n'a pas fonctionné pour moi. Mon conseil est d'utiliser Linux - vous vous débarrasser de beaucoup de problèmes à la compilation, maintenant et dans l'avenir.
+1 pour la recommandation de l'utilisation de Linux au lieu de lutter avec Cygwin. Mais pour les membres de WM (Windows mazo) de la communauté, voici le guide: Comment compiler ffmpeg-2.2.2 sous windows avec cygwin et android ndk r9c
Je suis sur Mac (pas de cygwin, cygwin n'est pas compatible), j'ai exécuté "compile-ffmpeg.sh" et "compile-ijk.sh" tout s'est bien passé. Dans Android Studio, quand je lance Gradle (Synchronisation Projet avec Gradle Fichiers), tout est ok. Mais j'ai exactement la même erreur quand je lance mon application sur le périphérique. Pouvez-vous m'aider ?
non, il doit certainement si vous avez prédéfinis libs, puis les mettre à bon dossier. Probablement vous avez besoin de procéder à d'autres ajustements mineurs, mais je ne suis pas familier avec beaucoup d'Android Studio.
OriginalL'auteur Pavel S.