原文:http://doandroid.info/?p=497
在续系列文章在32位的ubuntu
11.04中为android ndk r6编译ffmpeg0.8.1版-android中使用ffmpeg媒体库(一)和在android中通过jni方式使用编译好的ffmpeg库-android中使用ffmpeg媒体库(二)文章后,本文将根据github中churnlabs的一个开源项目,来深入展开说明如何使用ffmpeg库进行多媒体的开发。
本文中的代码来自于https://github.com/churnlabs/android-ffmpeg-sample,更多的可以参考这个项目代码。我会在代码中加一些自己的注释。感谢作者churnlabs给我们提供这么好的例子以供我们学习。
在android的一些系统层应用开发大多数是采用jni的方式调用,另外对于一些比较吃cpu或者处理逻辑比较复杂的程序,也可以考虑使用jni方式来封装。可以提高程序的执行效率。
本文涉及到以下几个方面:
1 将3gp文件push到模拟机器的sdcard中
2 写jni代码,内部调用ffmpeg库的方法,编译jni库
3 loadlibrary生成的库,然后撰写相应的java代码
4 执行程序,并查看最终运行结果。
最终程序的显示效果如下:
1 使用eclipse的ddms工具,将vid.3pg push到sdcard中
2 撰写相应的jni文件
3 撰写相应的android.mk文件
这里需要注意一下文件的目录情况,我截图说明一下。
在android.mk中有意个local_c_includes :=$(local_path)/include指明了相应的ffmpeg的头文件路径。故在代码中包含
就可以。
4 调用ndk-build,生成libffmpegutils.so文件,将这个文件拷贝到/root/develop/android-ndk-r6/platforms/android-8/arch-arm/usr/lib目录,使得我们在下面使用android avd2.2的时候,可以加载到这个so文件。
5 撰写相应的eclipse项目代码,由于在native.c文件中指明了项目的工程名词以及类名词还有函数名词,故我们的项目为com.churnlabs.ffmpegsample下面的mainactivity.java文件
6 编译运行即可,最终效果图
7 项目代码下载:
https://github.com/churnlabs/android-ffmpeg-sample/zipball/master
参考:
1 https://github.com/churnlabs/android-ffmpeg-sample
2 http://www.360doc.com/content/10/1216/17/474846_78726683.shtml
3 https://github.com/prajnashi