Android自定义so文件调用ffmpeg.so详解.doc

Android自定义so文件调用ffmpeg.so详解.doc

ID:57645889

大小:1.16 MB

页数:18页

时间:2020-08-30

Android自定义so文件调用ffmpeg.so详解.doc_第1页
Android自定义so文件调用ffmpeg.so详解.doc_第2页
Android自定义so文件调用ffmpeg.so详解.doc_第3页
Android自定义so文件调用ffmpeg.so详解.doc_第4页
Android自定义so文件调用ffmpeg.so详解.doc_第5页
资源描述:

《Android自定义so文件调用ffmpeg.so详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Android自定义so文件调用ffmpeg.so详解在使用一下介绍内容时候,我认为所有读者都已具备一下水平:1、会建立android项目工程2、了解NDK编程入门知识3、已成功编译或在网上已下载到ffmpeg.so动态库文件我自己成功编译ffmpeg.so文件:使用vitamio提供的.sh脚本文件在linux环境下编译的,编译过程此处略去一万字…1、在NDK的samples下建立android工程,此处我建立的是HelloFFmpeg,如下图:2、编写本地函数声明,NDK的samples目录下有一个hello-jni的例

2、子:使用UltraEdit打开HelloJni.java文件:将该文件的的一下内容拷贝到HelloFFmpeg工程的MainActivity.java的相应位置:(1)、拷贝onCreate中的内容:(2)、拷贝本地函数声明:(3)、拷贝库文件加载:打开拷贝完成的HelloFFmpeg工程下的MainActivity.java文件,如下:1、生成本地.h头文件:新建立jni目录:在jni目录下建立再建立jni目录这里通过cmd进入第二个jni目录:输入以下内容生成.h头文件:此时会报错,因为咱们的本地函数和本地库的引用均在主

3、类MainActivity中声明引用的,一般重新创建一个类进行声明引用的时候是不会出错的。但此时我给大家提供一个解决该错误的方法:进入src目录中,使用下面的语句:其中:-d:代表.h所在的目录,如果目录不存在,则自动创建一个../jni/jni:代表上级目录中的jni目录,.h文件将存放在此处在工程上刷新,就出现.h头文件了:1、创建.c文件在c文件中包含刚才生成的头文件,并将头文件的函数声明部分拷贝到c文件中:1、包含头文件(1)先给大家看看我使用vitamio生成库文件后的文件目录:所有的so库都在build文件夹中该

4、文件夹中包含了支持不同cpu特性的so库我使用armv7的so库(1)在工程jni目录下建立include目录将armv7/include下的文件夹全部拷贝到工程下的include文件夹下(1)在c文件中包含头文件1、包含ffmpeg.so动态库(1)建立pretuilt目录,并将ffmpeg.so拷贝进去在prebuilt下建立Android.mk文件内容如下(2)在jni目录下建立Android.mk文件内容如下(1)在jni/jni目录下建立Android.mk文件内容如下参数说明:LOCAL_C_INCLUDES:为

5、包含头文件目录,前面留空白区域不是空格,是按Tab键生成的,这个一定要注意,不然交叉编译时候会出错LOCAL_SHARED_LIBRARIES:为共享库,此处为全称libffmpegLOCAL_MODULE:MainActivity中声明引用的hello-jniLOCAL_SRC_FILES:c源文件名1、编写c文件,内容如下,此函数返回ffmpeg版本号2、修改include头文件当直接交叉编译以上内容时会报错,提示找不到某某.h文件,原因是include文件夹中的.h头文件调用逻辑问题,导致交叉编译时找不到头文件例如li

6、bavcodec/avcodec.h头文件中:将所有没有包含在libavcodec目录下的头文件引用路径全部修改,修改后如下:依照以上步骤,检查所有的头文件引用,以防编译出错10、交叉编译(1)打开Cywin,进入到工程目录下(2)编译输入../../ndk-build进行编译Ohmygod!出现了以上错误,现在你是否要崩溃了,别急,现在使用以下方法:在工程路径下:输入:cdobj/local/armeabi输入:chmod777./*(注:上面的错误的结果是没有生成libs文件,但生成了obj文件,因此改这个错误的时候ob

7、j不要删)刷新工程,出现so文件此时运行程序,会报错,究其原因,是因为MainActivity中未包含ffmpeg动态库文件,修改MainActivity如下重新编译成功,如下图:刷新工程,此时libs下便出现了两个so动态库:此时重新运行工程,将打印ffmpeg版本号,如下图:此处再次省略一万字…

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。