就以网上的那个《FFMPEG解码流程》中的例子来讲吧!
环境说明:在Windows下安装了Cygwin1.7.6版本。
我的NDK安装目录是:c:\cygwin\home\Dragon\Android\android-ndk-r4b
在Cygwin设置了环境变量:
NDK_ROOT=~/Android/android-ndk-r4b
export NDK_ROOT
1. 在c:\cygwin\home\Dragon\Android\android-ndk-r4b\samples\创建一个文件夹,命名为Test
在里面再创建一个文件夹jni,在jni我们必须有这四个:
(1) 源码:main.c
(2) Ffmpeg0.6源码,文件名ffmpeg
(3) Android.mk
(4) so文件夹,里面放好了编译好的lib*.so文件
除了FFMPEG源码,这些文件我已经放到CSDN下载了。下载地址:
http://download.csdn.net/source/2776066
2.然后启动cygwin:
$ cd $NDK_ROOT
$ ndk-build NDK_PROJECT_PATH=$NDK_ROOT/samples/Test
就会产生一个在Test\libs\armeabi\Test
运行Android虚拟机,我的是2.2版本。
把所有用到的SO文件adb push 到/system/lib/
把Test文件adb push 到 /system/bin/
把要测试的文件clock.avi也adb push 到/system/bin/
adb shell 进入到Android虚拟机。
# cd /system/bin/
# chmod 777 Test
# Test clock.avi
只要我们修改.c文件和Android.mk文件我们就可以编写jni 的native方法生成SO文件给JAVA调用,当你调试时如果你的JAVA程序调用SO文件时一定要把ffmpeg里用到的SO文件上传到/system/lib/不然调试不了。