/**
   * Default constructor. The same as Android's MediaPlayer().
   *
   * <p>When done with the MediaPlayer, you should call {@link #release()}, to free the resources.
   * If not released, too many MediaPlayer instances may result in an exception.
   *
   * @param preferHWDecoder MediaPlayer will try to use hardware accelerated decoder if true
   */
  public MediaPlayer(Context ctx, boolean preferHWDecoder) {
    mContext = ctx;

    String LIB_ROOT = Vitamio.getLibraryPath();
    if (preferHWDecoder) {
      if (!NATIVE_OMX_LOADED.get()) {
        if (Build.VERSION.SDK_INT > 17) loadOMX_native(LIB_ROOT + "libOMX.18.so");
        else if (Build.VERSION.SDK_INT > 13) loadOMX_native(LIB_ROOT + "libOMX.14.so");
        else if (Build.VERSION.SDK_INT > 10) loadOMX_native(LIB_ROOT + "libOMX.11.so");
        else loadOMX_native(LIB_ROOT + "libOMX.9.so");
        NATIVE_OMX_LOADED.set(true);
      }
    } else {
      unloadOMX_native();
      NATIVE_OMX_LOADED.set(false);
    }

    Looper looper;
    if ((looper = Looper.myLooper()) != null) mEventHandler = new EventHandler(this, looper);
    else if ((looper = Looper.getMainLooper()) != null)
      mEventHandler = new EventHandler(this, looper);
    else mEventHandler = null;

    native_init();
  }
 static {
   String LIB_ROOT = Vitamio.getLibraryPath();
   try {
     Log.i("LIB ROOT: %s", LIB_ROOT);
     System.load(LIB_ROOT + "libstlport_shared.so");
     System.load(LIB_ROOT + "libvplayer.so");
     loadFFmpeg_native(LIB_ROOT + "libffmpeg.so");
     boolean vvo_loaded = false;
     if (Build.VERSION.SDK_INT > 8) vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.9.so");
     else if (Build.VERSION.SDK_INT > 7) vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.8.so");
     else vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.7.so");
     if (!vvo_loaded) {
       vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.j.so");
       Log.d("FALLBACK TO VVO JNI " + vvo_loaded);
     }
     loadVAO_native(LIB_ROOT + "libvao.0.so");
   } catch (java.lang.UnsatisfiedLinkError e) {
     Log.e("Error loading libs", e);
   }
 }
예제 #3
0
  public static Bitmap createVideoThumbnail(Context ctx, String filePath, int kind) {
    if (!Vitamio.isInitialized(ctx)) {
      return null;
    }
    Bitmap bitmap = null;
    MediaMetadataRetriever retriever = null;
    try {
      retriever = new MediaMetadataRetriever(ctx);
      retriever.setDataSource(filePath);
      bitmap = retriever.getFrameAtTime(-1);
    } catch (Exception ex) {
    } finally {
      try {
        retriever.release();
      } catch (RuntimeException ex) {
      }
    }

    if (bitmap != null) {
      if (kind == Video.Thumbnails.MICRO_KIND)
        bitmap =
            extractThumbnail(
                bitmap,
                TARGET_SIZE_MICRO_THUMBNAIL_WIDTH,
                TARGET_SIZE_MICRO_THUMBNAIL_HEIGHT,
                OPTIONS_RECYCLE_INPUT);
      else if (kind == Video.Thumbnails.MINI_KIND)
        bitmap =
            extractThumbnail(
                bitmap,
                TARGET_SIZE_MINI_THUMBNAIL_WIDTH,
                TARGET_SIZE_MINI_THUMBNAIL_HEIGHT,
                OPTIONS_RECYCLE_INPUT);
    }
    return bitmap;
  }