天天看点

一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)

原文: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 执行程序,并查看最终运行结果。

最终程序的显示效果如下:

一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)

1 使用eclipse的ddms工具,将vid.3pg push到sdcard中

一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)

2 撰写相应的jni文件

3 撰写相应的android.mk文件

这里需要注意一下文件的目录情况,我截图说明一下。

一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)

在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 编译运行即可,最终效果图

一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)

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

继续阅读