【文件属性】:
文件名称:ffmpeg编译的android可用的so文件,多个版本
文件大小:4.39MB
文件格式:RAR
更新时间:2019-02-08 16:22:10
ffmpeg jni android so
经过本人测试,可以调用并成功执行ffmpeg的命令
jni相关的c语言代码为
#include
#include
#include
#ifdef ANDROID
#include
#include
#define LOGE(format, ...) __android_log_print(ANDROID_LOG_ERROR, "(>_<)", format, ##__VA_ARGS__)
#define LOGI(format, ...) __android_log_print(ANDROID_LOG_INFO, "(=_=)", format, ##__VA_ARGS__)
#else
#define LOGE(format, ...) LOGE("(>_<) " 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
【文件预览】:
libswresample-1.so
libavcodec-56.so
libavfilter-5.so
libpostproc-53.so
libswscale-3.so
libavutil-54.so
libavformat-56.so
libavdevice-56.so