Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62201
  • 博文数量: 8
  • 博客积分: 207
  • 博客等级: 入伍新兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-24 13:42
文章分类
文章存档

2012年(8)

分类: 嵌入式

2012-05-27 14:20:26

一.环境准备

1.       Cygwin 1.7.11

2.       Android NDK r7b (http://developer.android.com/sdk/ndk/index.html )

3.       Eclipse 3.6.2

 

二.FFMpeg下载

 

 

三.FFMpeg编译

1.       解压ffmpeg-0.8.7.tar.gz得到ffmpeg的源码ffmpeg-0.8.7,将源码拷贝到

NDKSample目录,我的为:

F:\android-ndk-r7b\samples\ffmpeg-0.8.7

2.       进入到ffmpeg-0.8.7,新建一个jni文件夹,是NDK默认build目录,

后将ffmpeg-0.8.7目录下(除去jni)的所有内容,都剪切进到jni目录下,

目录结构如下:


 

3.       F:\android-ndk-r7b\samples\ffmpeg-0.8.7\jni\目录下新建两个文件config.shandroid.mk

    

   config.sh内容如下:

 

   export TMPDIR="D:/temp/android"

PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows

PLATFORM=$NDK/platforms/android-8/arch-arm

./configure --target-os=linux \

    --arch=arm \

   --enable-version3 \

   --enable-gpl \

   --enable-nonfree \

   --disable-doc \

   --disable-stripping \

   --disable-ffmpeg \

   --disable-ffplay \

   --disable-ffprobe \

   --disable-encoders \

   --disable-muxers \

   --disable-devices \

   --disable-protocols \

   --enable-protocol=file \

   --enable-avfilter \

   --enable-network \

   --disable-avdevice \

   --enable-cross-compile \

   --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \

   --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \

   --nm=$PREBUILT/bin/arm-linux-androideabi-nm \

   --extra-cflags="-fPIC -DANDROID" \

   --disable-asm \

   --enable-neon \

   --enable-armv5te \

   --extra-ldflags='-L$PLATFORM/usr/lib -nostdlib' \

   

   注:<1>TMPDIR是编译时的临时目录,必须有。如果没有,在下一步会执行./config.sh出现如下报错:

       F:androidandroid-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc is unable to create an executable file.              C compiler test failed.

 

      <2>$NDKAndroid ndk根目录

 

      <3> ./configure是指运行ffmpeg的配置文件,跟在后面的运行参数设置

 

android.mk内容如下:

LOCAL_PATH := $(call my-dir)

 

include $(CLEAR_VARS)

 

LOCAL_MODULE := ffmpeg

 

include $(LOCAL_PATH)/config.mak

 

LOCAL_CFLAGS := -DHAVE_AV_CONFIG_H -std=c99

 

AVUTIL_C_FILES = adler32.c \

    aes.c \

    audioconvert.c \

    avstring.c \

    base64.c \

    cpu.c \

    crc.c \

    des.c \

……

……

……

###########################################

 

LOCAL_ARM_MODE := arm

 

#include $(BUILD_STATIC_LIBRARY)

include $(BUILD_SHARED_LIBRARY)

 

  由于android.mk太长,只附上部分,如有需要请mail我,

邮箱:zhaoch86@sina.cn

 

4.       准备编译

打开Cygwin命令行,cdffmpeg源码的jni目录,执行./config.sh,会在当前目录

生成两个文件:config.hconfig.mak

 

在编译之前,还需要做如下修改:

        <1>、将config.h        define restrict restrict        改为        define restrict

   <2>libavutil/libm.h中所有的static函数全部删掉

 

5.       编译ffmpeg,生成libffmpeg.so

cd.. à退到上层目录

bash中输入$NDK/ndk-build

漫长等待(20分钟左右),会在libs\armeabi目录下生成libffmpeg.so

 

恭喜,成功!!!

阅读(3532) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Apatch Tomcat安装及虚拟目录配置

给主人留下些什么吧!~~