- 博客(1)
- 资源 (2)
- 收藏
- 关注
ffmpeg编译的android可用的so文件,多个版本
经过本人测试,可以调用并成功执行ffmpeg的命令
jni相关的c语言代码为
#include
#include
#include
#ifdef ANDROID
#include
#include
#define LOGE(format, ...) __android_log_print(ANDROID_LOG_ERROR, "(>__<) " format "\n", ##__VA_ARGS__)
#define LOGI(format, ...) LOGE("(^_^) " format "\n", ##__VA_ARGS__)
#endif
int ffmpegmain(int argc, char **argv);
//Output FFmpeg's av_log()
void custom_log(void *ptr, int level, const char* fmt, va_list vl){
//To TXT file
FILE *fp=fopen("/storage/emulated/0/av_log.txt","a+");
if(fp){
vfprintf(fp,fmt,vl);
fflush(fp);
fclose(fp);
}
//To Logcat
//LOGE(fmt, vl);
}
JNIEXPORT jint JNICALL Java_com_rinogame_ffmpegandroidtranscoder_MainActivity_ffmpegcore( JNIEnv * env, jobject thiz, jint cmdnum, jobjectArray cmdline)
{
//FFmpeg av_log() callback
av_log_set_callback(custom_log);
int argc=cmdnum;
char** argv=(char**)malloc(sizeof(char*)*argc);
int i=0;
for(i=0;iGetObjectArrayElement(env,cmdline,i);
const char* tmp=(*env)->GetStringUTFChars(env,string,0);
argv[i]=(char*)malloc(sizeof(char)*1024);
strcpy(argv[i],tmp);
}
ffmpegmain(argc,argv);
for(i=0;i<argc;i++){
free(argv[i]);
}
free(argv);
return 0;
}
2016-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人