FFmpeg 라이브러리를 참조하는 플레이어를 만들때..

 

package net.jbong.FFmpegBasic;

import android.graphics.Bitmap;

public class FFmpegInterface {
    public static native int initBasicPlayer();
 public static native int openMovie(String filePath);
 public static native int renderFrame(Bitmap bitmap);
 public static native int getMovieWidth();
 public static native int getMovieHeight();
 public static native void closeMovie();

이와 같은 내용의 java파일을 class 파일로 만든 후.

javah로 jni 형태의 헤더 파일을 만드려 할때.

다음과 같은 문제가 나왔다.

 

Error: cannot access android.app.Activity
  class file for android.app.Activity not found

 

즉 위에 import android.graphics.Bitmap;이놈이 문제

 

이놈을 빼버리고 javah 하면 되지만.

문제는 public static native int renderFrame(Bitmap bitmap);

여기에 Bitmap class가 쓰여 반드시 import 해야 되는 상황.

 

우선 작업 환경이.

Windows와 우분투 병행 작업 환경 이기 때문에.

 

Vm-ware에

Windows의 C:\android\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-19 폴더를공유한다.

 

그럼 vm-ware 우분투에서 /mnt/hgfs/android-19를 마음대로 드나 들수있다.

 

 

우선 class 파일을 만들기 위해.

 

java 파일이 있는 폴더로 가서. 다음과 같이 입력.

 

javac -cp /mnt/hgfs/android-19/android.jar FFmpegInterface.java

FFmpegInterface.java는 내가 만든 파일이고.

-cp의 뜻은 android.jar를 참조해서 컴파일(?)하라는 것이다.

 

그럼 class가 만들어 진다.

-cp를 안하면 컴파일 안된다.

 

또는 이클립스등을 이용해서 class를 만들면 된다.

 

 

그후, JNI 방식대로 폴더를 만들고. class를 파일을 넣고..

 

javah -classpath ./ -bootclasspath /mnt/hgfs/android-19/android.jar -jni net.jbong.FFmpegBasic.FFmpegBasic

 

입력.

 

 

classpath : class파일이 잇는 곳

bootclasspath : android.jar를 참조(?)하샘.

-jni : jni 형태로 해더 파일 만들어주세요.

net.jbong.FFmpegBasic.FFmpegBasic : 패키지 경로..

 

이러면 헤더 파일 만들어진다.

 

검색해 보니깐.. 없는 것 같아서 적어놨음.

+ Recent posts