android ndk下编译ffmpeg



最近开发一个多视窗的多媒体播放器,需要多个窗口同时播放不同的视频文件,所以考虑软解码,然后就研究了一下ffmpeg,经过一番努力终于编译出来了,在此记录下来,作为备忘,也供新手参考。


1,下载ffmpeg,不同版本有些接口不同,不兼容,所以我下载的是ffmpeg-2.2.10,下载地址http://www.ffmpeg.org/download.html,点More Releases或直接下拉到FFmpeg 2.2.10 "Muybridge",点Download下载,下载完成后得到文件ffmpeg-2.2.10.tar.bz2。


2,解压文件,执行tar -xf ffmpeg-2.2.10.tar.bz2,解压为ffmpeg-2.2.10。

3,android ndk环境搭建,android ndk下载地址http://developer.android.com/tools/sdk/ndk/index.html#Installing(可能翻墙才能下载,或者百度搜索到其他地方下载,很多地方都可以下载),目前最新的为android-ndk-r10d,下载页如下:

Downloads


PlatformPackageSize (Bytes)MD5 Checksum
Windows 32-bitandroid-ndk-r10d-windows-x86.exe455427281c0930abfae0c990c4d191cc4ebd46b68
Windows 64-bitandroid-ndk-r10d-windows-x86_64.exe4726137329a33f96da58a7e0b70e47d27b4a880b4
Mac OS X 32-bitandroid-ndk-r10d-darwin-x86.bin4415452130aeb3dc062dc457a4cd01e72eadb2379
Mac OS X 64-bitandroid-ndk-r10d-darwin-x86_64.bin442691567cb101e1e62d56ea75b215f6bc6c27fae
Linux 32-bit (x86)android-ndk-r10d-linux-x86.bin44999719070ed6d8c34e7e620c145b791e8eeef89
Linux 64-bit (x86)android-ndk-r10d-linux-x86_64.bin459151600263b83071e6bca15f678985
48d8d236e
我选择了 Linux 64-bit (x86):
Linux 64-bit (x86)android-ndk-r10d-linux-x86_64.bin459151600263b83071e6bca15f67898548d8d236e

安装:

# chmod a+x android-ndk-r10d-linux-x86_64.bin

# ./android-ndk-r10d-linux-x86_64.bin

执行完生成android-ndk-r10d


4,把ffmpeg-2.2.10放在android-ndk-r10d/sources下。


5,创建一个编译脚本文件build.sh(这个是参考一个老外的)

#!/bin/bash

NDK=$HOME/android-ndk-r10d
SYSROOT=$NDK/platforms/android-18/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64

function build
{ 
./configure \
    --prefix=$PREFIX \
    --enable-pthreads \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-avdevice \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG

make clean
make -j4
make install
}

CPU=arm
PREFIX=$(pwd)/android/$CPU 
ADDI_CFLAGS="-marm"
build


6,编译,在android-ndk-r10d/sources/ffmpeg-2.2.10下执行./build.sh


7,编译完生成目录android/arm,下面有include和lib


编译过程会输出到文件config.log中,可以在config.log中看编译过程和结果

编译过程可能会打印很多下面的这个信息,可以不管它

check_cpp_condition stddef.h defined __ARM_ARCH_4__ || defined __TARGET_ARCH_4

check_cpp

BEGIN /tmp/ffconf.f1bnMXuB.c

    1 #include <stddef.h>

    2 #if !(defined __ARM_ARCH_4__ || defined __TARGET_ARCH_4)

    3 #error "unsatisfied condition: defined __ARM_ARCH_4__ || defined __TARGET_ARCH_4"

    4 #endif

END /tmp/ffconf.f1bnMXuB.c


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值