2014-07-06 10 views
5

Ho intenzione di utilizzare ijkplayer github link. Ho scaricato questo e poi lo ho importato in eclissi da File> Importa> Generale> Progetti esistenti nell'area di lavoro. Dopo di che ho tre progetti:come utilizzare la libreria ijkplayer

1.ijkmediaplayer (library) 
2.ijkmediawidget (VideoView-like interface) 
3.ijkmediademo (Demo project) 

Quando eseguo ijkmediademo, errore è accaduto e il programma si è schiantato. Ho avuto queste linee di errore:

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) 

E 'Sembra che il programma non riesce a trovare alcune librerie che differenzia qui in classe IjkMediaPlayer:

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; 
     } 
    } 
} 

quali sono queste librerie?

dove sono queste librerie? (non sono riuscito a trovarli nei progetti)

Come può risolvere questo problema?

risposta

2

Sembra che non siano state create librerie che sono necessarie - devi farlo da solo. Seguire le istruzioni sotto l'intestazione Costruire Android sulla pagina ijkplayer github link

Dopo processo di generazione di successo si otterrà diversi file di libreria (libijkffmpeg, libijkutil, libijkadk, libijksdl, libijkplayer) che sarà messo automaticamente nella cartella ijkmediaplayer/libs .

ho costruito con successo ijkplayer librerie sotto VirtualBox Ubuntu 12.04. E dovrai installare NDK Android.

+0

Grazie amico, sì ho capito. Sono su Windows, usando cygwin, ho provato a creare librerie ... ma appare un nuovo problema, quando provo '$ ./compile-ffmpeg.sh all' mi mostra" Devi definire ANDROID_NDK, ANDROID_SDK prima di iniziare. Devono puntare alle directory NDK e SDK. \ n "Come può risolvere questo problema? Dovrei creare un percorso nelle variabili di ambiente? – MAY3AM

+1

In realtà non sono sicuro che sarete in grado di compilare queste librerie su Cygwin - almeno non ho visto nessuna informazione su ffmpeg di successo per Android build usando Cygwin. Se si desidera utilizzare Cygwin, è necessario creare variabili ambientali per ANDROID_NDK e ANDROID_SDK, ma come ricordo non ha funzionato per me. Il mio consiglio è di usare Linux - ti libererai di molti problemi con la compilazione ora e in futuro. –

+0

** + 1 ** per la raccomandazione di usare Linux invece di lottare con Cygwin. Ma per i membri della community ** WM ** (Windows mazo), ecco la guida: _ [Come compilare ffmpeg-2.2.2 su Windows con cygwin e android ndk r9c] (http://stackoverflow.com/questions/23683518/how-to-compile-ffmpeg-2-2-2-on-windows-con-cygwin-and-android-ndk-r9c) _ –

Problemi correlati