2013-03-28 2 views
4

안녕하세요. 비디오 파일은 30 분이지만, 비디오를 00:09:23에서 00:25:33으로 슬라이스하고 싶습니다. 사용자가 응용 프로그램을 통해 해당 비디오를 재생할 때 비디오의 일부분을 추출하려고합니다. 비디오 사용자를 재생하는 동안 비디오를 자르려면 시작 및 끝 시간을 지정할 수 있습니다. 그래서 기간을 기반으로 비디오를 자르고 sd 카드에 저장하는 어떤 방법이 있습니까?시작 위치에서 끝 위치로 안드로이드 비디오를 자르십시오.

답변

0

FFmpeg 기능을 Java 코드에 노출시키기 위해 JNI 규칙을 사용하여 C 글루 코드를 작성해야합니다. 또한 라이브러리를로드하고 네이티브 메소드를 선언 할 몇 가지 자바 코드가 필요

jstring 
Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, 
                jobject thiz) 
{ 
    return (*env)->NewStringUTF(env, "Hello from JNI !"); 
} 

다음은 안드로이드 NDK 샘플에서 C로 구현 된 JNI 방법의 예입니다.

public class HelloJni 
{ 
    public native String stringFromJNI(); 

    static { 
     System.loadLibrary("hello-jni"); 
    } 
} 

나는 자바 미디어 프레임 워크와 통합하기 위해 이미는 FFmpeg 일부 JNI 인터페이스를 구현하고 this project on sourceforge을 발견했다. 유용 할 수 있습니다.

JNA (Java Native Access)라는 또 다른 Java FFI 기술을 사용하면 Java에서 원시 함수 프로토 타입을 선언하고 직접 호출 할 수 있습니다. 이를 사용하면 상용구 코드가 더 적게 필요할 수 있습니다. Android 구현에 대해서는 this project을 참조하십시오. (필자는 직접 사용한 적이 없다.)

Java에서 호출 할 수있는 래퍼 메서드 인 JNI을 포함시켜야하는데,이 메서드는 차례로 FFmpeg 함수를 호출합니다.

-1

포함 된 Android API를 통해이를 수행 할 방법이 없습니다. 이를 처리하기 위해 자신의 논리를 작성해야합니다. 대부분의 비디오 편집 응용 프로그램에서는 ffmpeg을 사용하여이를 처리하므로 일부 C 코드를 작성하고 NDK을 사용하여이를 수행해야합니다. Google과 스택 오버 플로우를 검색하면 많은 질문과 리소스를 찾아 시작할 수 있습니다. 당신이 NDK 및/또는 ffmpeg에 익숙하지 않은 경우 압도적 인 것처럼 보일 수 있지만 일단 시작하면 찾고있는 것을 성취 할 수 있어야합니다.

관련 문제