android编译ffmpeg+x264
2016-02-24 08:53
531 查看
android编译ffmpeg+x264
编译x264:
下载最新版的x264
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_x264.sh,内容如下:
执行如下命令编译和安装
make
sudo make install
sudo ldconfig
编译ffmpeg:
下载最新版的ffmpeg
http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_ffmpeg.sh,内容如下:
执行build_ffmpeg.sh编译完成,编译输出在$PREFIX指定的目录
原文:http://hi.baidu.com/duizhe_memory/item/482e6fd6ccfee7fa93a974be
编译x264:
下载最新版的x264
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_x264.sh,内容如下:
NDK= NDK=/home/duizhe/android-ndk-r6(你自己的NDK根目录)
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt
PLATFORM=$NDK/platforms/android-8/arch-arm (or any other android platform you want)
PREFIX=/home/android-ffmpeg
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM
make
sudo make install
sudo ldconfig
编译ffmpeg:
下载最新版的ffmpeg
http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_ffmpeg.sh,内容如下:
#!/bin/bash
export NDK=/home/duizhe/android-ndk-r6
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/android-ffmpeg
function build_one
{
./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/linux-x86/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/linux-x86/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-nonfree \
--enable-version3 \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-protocol=rtp \
--enable-hwaccels \
--enable-zlib \
--disable-devices \
--disable-avdevice \
--extra-cflags="-I/home/android-ffmpeg/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="-L/home/android-ffmpeg/lib"
make -j4 install
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
build_one
编译完成。
另一篇文章:
评论
另一篇文章:http://bbs.chinavideo.org/forum.php?mod=viewthread&tid=13358
avcodec_find_encoder(CODEC_ID_H264)返回值为空
编译ffmpeg和x264吃了不少苦,很重要的一点就是如果你对这个编译不是很熟的话千万不要尝试用cygdrive+windows编译。建议在Ubuntu下编译!
1.首先要确保已经编译了x264的源码
这边是我x264的sh
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
export NDK=/home/mtb0157/workspace/android-ndk-r9
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CC=$PREBUILT/bin/arm-linux-androideabi-gcc
export LD=$PREBUILT/bin/arm-linux-androideabi-ld
export AS=$PREBUILT/bin/arm-linux-androideabi-gcc
export AR=$PREBUILT/bin/arm-linux-androideabi-ar
export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/mtb0157/Project/lib
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--enable-strip \
--disable-cli \
--extra-cflags= "-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \ #这个没啥用
--host=arm-linux \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM
2.之所以编译的时候提示找不到x264,有两种可能.一是没有把静态库包含进来,二是包含进来了但是没有权限! 之前我尝试用 -I/usr/local/lib 这个目录作为附加库,结果失败了
于是我用上面的.sh定义我的
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
PREFIX=/home/mtb0157/Project/lib
x264编译完后 make install 就可以把库导到上面的目录了
3.在ffmpeg的sh里面加入额外的库和头文件
下面是我的sh
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#!/bin/bash
NDK=/home/mtb0157/workspace/android-ndk-r9
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/mtb0157/Project/lib
function build_one
{
./configure --prefix=$PREFIX\
--disable-doc \
--enable-gpl \
--enable-libx264 \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$PLATFORM \
--extra-cflags=-I/home/mtb0157/Project/lib/include \
--extra-ldflags=-L/home/mtb0157/Project/lib/lib
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
这边指定了之前我导出的x264的库
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
--extra-cflags=-I/home/mtb0157/Project/lib/include \
--extra-ldflags=-L/home/mtb0157/Project/lib/lib
//我的另一篇文章: http://blog.csdn.net/chinabinlang/article/details/50522564
编译x264:
下载最新版的x264
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_x264.sh,内容如下:
export NDK=/home/robin/桌面/android-ndk-r8c export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt export PLATFORM=$NDK/platforms/android-8/arch-arm export PREFIX=/home/robin/android-x264 ./configure --prefix=$PREFIX \ --enable-static \ --enable-pic \ --disable-asm \ --disable-cli \ --host=arm-linux \ --cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \ --sysroot=$PLATFORM
执行如下命令编译和安装
make
sudo make install
sudo ldconfig
编译ffmpeg:
下载最新版的ffmpeg
http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_ffmpeg.sh,内容如下:
#!/bin/sh export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt export PLATFORM=$NDK/platforms/android-8/arch-arm export PREFIX=/home/robin/android-x264 build_one(){ ./configure --target-os=linux --prefix=$PREFIX \ --enable-cross-compile \ --enable-runtime-cpudetect \ --disable-asm \ --arch=arm \ --cc=$PREBUILT/linux-x86/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \ --disable-stripping \ --nm=$PREBUILT/linux-x86/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --enable-nonfree \ --enable-version3 \ --disable-everything \ --enable-gpl \ --disable-doc \ --enable-avresample \ --enable-demuxer=rtsp \ --enable-muxer=rtsp \ --disable-ffplay \ --disable-ffserver \ --enable-ffmpeg \ --disable-ffprobe \ --enable-libx264 \ --enable-encoder=libx264 \ --enable-decoder=h264 \ --enable-protocol=rtp \ --enable-hwaccels \ --enable-zlib \ --disable-devices \ --disable-avdevice \ --extra-cflags="-I/home/robin/android-x264/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \ --extra-ldflags="-L/home/robin/android-x264/lib" make -j4 install $PREBUILT/linux-x86/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o $PREBUILT/linux-x86/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a } build_one
执行build_ffmpeg.sh编译完成,编译输出在$PREFIX指定的目录
原文:http://hi.baidu.com/duizhe_memory/item/482e6fd6ccfee7fa93a974be
编译Android下可用的FFmpeg+x264
编译x264:下载最新版的x264
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_x264.sh,内容如下:
NDK= NDK=/home/duizhe/android-ndk-r6(你自己的NDK根目录)
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt
PLATFORM=$NDK/platforms/android-8/arch-arm (or any other android platform you want)
PREFIX=/home/android-ffmpeg
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM
make
sudo make install
sudo ldconfig
编译ffmpeg:
下载最新版的ffmpeg
http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
1.解压到指定的目录
2.切换当前目录为该目录
3.创建一个shell脚本build_ffmpeg.sh,内容如下:
#!/bin/bash
export NDK=/home/duizhe/android-ndk-r6
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/android-ffmpeg
function build_one
{
./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/linux-x86/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/linux-x86/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-nonfree \
--enable-version3 \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-protocol=rtp \
--enable-hwaccels \
--enable-zlib \
--disable-devices \
--disable-avdevice \
--extra-cflags="-I/home/android-ffmpeg/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="-L/home/android-ffmpeg/lib"
make -j4 install
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/linux-x86/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
build_one
编译完成。
另一篇文章:
使用 NDK r9 编译ffmpeg
博客分类:
android
1. 环境 ubuntu 我的是13.10 ndk r9 64位
2. 下载ffmpeg http://www.ffmpeg.org/download.html 找到
FFmpeg 2.1.3 "Fourier"
2.1.3 was released on 2014-01-15. It is the latest stable FFmpeg release from the 2.1 release branch, which was cut from master on 2013-10-28. Amongst lots of other changes, it includes all changes from ffmpeg-mt, libav master of 2013-10-27, libav 9 as of 2013-10-27.
It includes the following library versions:
libavutil 52. 48.101
libavcodec 55. 39.101
libavformat 55. 19.104
libavdevice 55. 5.100
libavfilter 3. 90.100
libswscale 2. 5.101
libswresample 0. 17.104
libpostproc 52. 3.100
Download bzip2 tarball 下载
下载之后 解压到 $NDK/sources 文件夹下面,这是因为编译快捷以及方便使用
3. 找到 ffmpeg-xxx/configure
找到如下几行:
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
上面几行会导致libavcodec.so.<version>
(e.g. libavcodec.so.55),不会被android承认 ,修改为;
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
4. 复制下面的代码到文本中 并命名为 build_android.sh,注意这个文件应该保存到 ffmpeg-xxx/configure
同一个文件夹下
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
#!/bin/bash
NDK=$HOME/Desktop/adt/android-ndk-r9
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--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
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
注意修改 NDK=$HOME/Desktop/adt/android-ndk-r9
这行
5. 执行
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
sudo chmod +x build_android.sh
./build_android.sh
6.输出 $NDK/sources/ffmpeg-xxx/android,
arm/lib 和arm/include
注意 arm/lib包含了两个 library files (e.g.: libavcodec-55.so) 和 symbolic links (e.g.: libavcodec.so) 我们需要删掉 symbolic links .
7. 让ffmpeg
Libraries用在我们的工程下
为了使ffmpeg libraries 可以作为 reusable modules, 需要添加一个文件 $NDK/sources/ffmpeg-xxx/android/arm/Android.mk
使用如下内容,
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavcodec
LOCAL_SRC_FILES:= lib/libavcodec-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavformat
LOCAL_SRC_FILES:= lib/libavformat-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libswscale
LOCAL_SRC_FILES:= lib/libswscale-2.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavutil
LOCAL_SRC_FILES:= lib/libavutil-52.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavfilter
LOCAL_SRC_FILES:= lib/libavfilter-3.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libwsresample
LOCAL_SRC_FILES:= lib/libswresample-0.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
这就是为什么我们把源码放在source文件夹下,ndk会自动寻找
8.使用
使用 libraries在Android project’s jni/Android.mk file,
Java代码
![](http://wang-peng1.iteye.com/images/icon_star.png)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tutorial03
LOCAL_SRC_FILES := tutorial03.c
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil
include $(BUILD_SHARED_LIBRARY)
$(call import-module,ffmpeg-2.0.1/android/arm)
这里你就会发现 我们用到了source中调用了 import-module
使用相对路径去调用。
分享到:
![](http://wang-peng1.iteye.com/images/sina.jpg)
![](http://wang-peng1.iteye.com/images/tec.jpg)
ios7
去掉左侧空格 | android h264含so
2014-01-16 13:32
浏览 3058
评论(3)
分类:移动开发
相关推荐
评论
3 楼 loovejava 2014-05-29
6步没有生成文件夹,7步和8步的mk文件分别怎么置放??
2 楼 ailuoben 2014-05-22
ygswine 写道
你好. 按照你的操作在编译 ./build_android.sh时一直报
--cross-prefix=/home/android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-: No such file or directory
是什么原因?
#!/bin/bash
NDK=/home/android/android-ndk-r9d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--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
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
在ubuntu中看一下这个文件是不是每行结束自动加上了两个空格,删掉空格就好了。我的是这样解决的
1 楼 ygswine 2014-03-29
你好. 按照你的操作在编译 ./build_android.sh时一直报
--cross-prefix=/home/android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-: No such file or directory
是什么原因?
#!/bin/bash
NDK=/home/android/android-ndk-r9d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--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
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
另一篇文章:http://bbs.chinavideo.org/forum.php?mod=viewthread&tid=13358avcodec_find_encoder(CODEC_ID_H264)返回值为空
| |
分享到:![]() QQ空间 ![]() 腾讯微博 ![]() 腾讯朋友 ![]() 分享0 ![]() 收藏0 | |
回复 使用道具 举报 | |
qqy13
![]() 发消息 | 2#![]() 发表于 2011-12-2 11:29:20 |只看该作者
| ||||
回复 使用道具 举报 | |||||
qqy13
![]() 发消息 | 3#![]() 发表于 2011-12-2 11:29:39 |只看该作者
| ||||
ffmpeg + x264 编译提示libx264
not found 的解决方法
编译ffmpeg和x264吃了不少苦,很重要的一点就是如果你对这个编译不是很熟的话千万不要尝试用cygdrive+windows编译。建议在Ubuntu下编译!1.首先要确保已经编译了x264的源码
这边是我x264的sh
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
export NDK=/home/mtb0157/workspace/android-ndk-r9
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CC=$PREBUILT/bin/arm-linux-androideabi-gcc
export LD=$PREBUILT/bin/arm-linux-androideabi-ld
export AS=$PREBUILT/bin/arm-linux-androideabi-gcc
export AR=$PREBUILT/bin/arm-linux-androideabi-ar
export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/mtb0157/Project/lib
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--enable-strip \
--disable-cli \
--extra-cflags= "-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \ #这个没啥用
--host=arm-linux \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM
2.之所以编译的时候提示找不到x264,有两种可能.一是没有把静态库包含进来,二是包含进来了但是没有权限! 之前我尝试用 -I/usr/local/lib 这个目录作为附加库,结果失败了
于是我用上面的.sh定义我的
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
PREFIX=/home/mtb0157/Project/lib
x264编译完后 make install 就可以把库导到上面的目录了
3.在ffmpeg的sh里面加入额外的库和头文件
下面是我的sh
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
#!/bin/bash
NDK=/home/mtb0157/workspace/android-ndk-r9
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/mtb0157/Project/lib
function build_one
{
./configure --prefix=$PREFIX\
--disable-doc \
--enable-gpl \
--enable-libx264 \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$PLATFORM \
--extra-cflags=-I/home/mtb0157/Project/lib/include \
--extra-ldflags=-L/home/mtb0157/Project/lib/lib
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
这边指定了之前我导出的x264的库
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
--extra-cflags=-I/home/mtb0157/Project/lib/include \
--extra-ldflags=-L/home/mtb0157/Project/lib/lib
//我的另一篇文章: http://blog.csdn.net/chinabinlang/article/details/50522564
相关文章推荐
- Android中SharedPreferences函数具体解释
- Android应用程序快速更换包名的方法
- 【转】Android短信发送和监控
- android短信监听工具(示例代码)
- 【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
- 【Android】自定义view的模版
- 【Android】监听蓝牙状态变化
- 【Android】使用ProgressBar遇到的问题
- android xml点击交互
- 【Android】沉浸式状态栏的两种实现方式
- Android屏幕适配
- android 成长日记 6.ListView详解
- android圆形图片,圆形背景文字的CircleTextImageView开源组件
- 【Android】图片资源的加载、简单处理
- 【Android】多媒体编程——MediaPlayer音频播放
- 【Android】Intent过滤器
- 【Android】BroadcastReceiver的生命周期
- 【Android】Activity启动模式
- Android下拉刷新汽车加速仪表盘效果
- Android Studio 常见问题之Rendering Problems