2017-07-07 3 views
0

私のJavaメディアコードをJNIに変換しようとしています。ミュクサーのJNIバージョンは、ファイル記述子を使用する場合javaので は、我々はNDK AMediaMuxerの作成方法は?

MediaMuxer(@NonNull String path, @Format int format) 

、対象ファイルの絶対パスでmediaMuxerを作成します。

AMediaMuxer* AMediaMuxer_new(int fd, OutputFormat format); 

アセットを使用する方法もありますが、アセットはファイルを再ソースするのと同じです(読み取り専用)。だからそれをするのは良い方法ではありません。

fileDescriptorを作成してJNI muxerコンストラクタに渡す良い方法はありますか?

ありがとうございました。

答えて

1

しかし、Java側でファイル記述子を取得してからネイティブコードに渡すことは大変です。出力ファイル名とオープンファイルをネイティブコードで渡す方がずっと簡単です。

#include <unistd.h> 
#include <fcntl.h> 
#include <jni.h> 

void my_jni_func(JNIEnv* env, jobject thiz, jstring filename) { 
    const char* c_filename = (*env)->GetStringUTFChars(env, filename) 
    int output_fd = open(c_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666); 
    (*env)->ReleaseStringUTFChars(env, filename, c_filename); 

    /* Check output_fd for validity, create muxer, and write streams */ 

    close(output_fd); /* close file when you've finished with muxer */ 
} 
関連する問題