Android编译供ffmpeg使用的libx264
来源:互联网 发布:知行浙江 编辑:程序博客网 时间:2024/04/29 20:21
之前使用ffmpeg主要是为了解码H264和mux合成MP4文件,所以下载了一个ffmpeg,编译成库之后用着也没问题。直到最近要用到编码功能,于是在ffmpeg的./configure中直接加上--enable-libx264 --enable-encoder=libx264,结果出现了
ERROR: libx264 not found搜索了一下,发现原来ffmpeg中是不集成libx264的,libx264属于第三方库,需要自己下载编译支持。从http://www.videolan.org/developers/x264.html下载了最新的libx264,找了一个基本的配置文件:
./configure --enable-pic --enable-static --cross-prefix=/root/android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --sysroot=/root/android/android-ndk-r9d/platforms/android-19/arch-arm/ --host=arm-linux --prefix=./build --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon "
configure&make&make install,之后在build目录了下生成了libx264.a文件和include头文件。重新编译ffmpeg,在configure配置--extra-cflags和--extra-ldflags中加上libx264的路径:
#!/bin/bashNDK=/root/android/android-ndk-r9dSYSROOT=$NDK/platforms/android-19/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64function build_one{./configure \ --prefix=$PREFIX \ --disable-shared \--disable-network \--disable-debug \ --disable-demuxers \--disable-muxers \--disable-encoders \--disable-bsfs \--disable-decoders \--enable-gpl \--enable-protocols \--enable-muxer=mp4 \--enable-decoder=h264 \--enable-encoder=libx264 \--enable-libx264 \--enable-asm \--enable-neon \--disable-yasm \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \--disable-filters \--disable-devices \ --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 -I./libx264/include $ADDI_CFLAGS" \ --extra-ldflags="-L./libx264/lib $ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install}CPU=armPREFIX=$(pwd)/android/$CPU ADDI_CFLAGS="-marm"build_one运行脚本,编译生成ffmpeg的库,可以看到configure打印已经有libx264了:
pod2man enabled yesmakeinfo enabled noExternal libraries:libx264Enabled decoders:h264Enabled encoders:libx264
另外在使用libx264的时候,出现了 “libx264.a(encoder.o): in function x264_encoder_open_148:encoder.c(.text+0x7480): error: undefined reference to 'log2f'” 的错误,参考http://blog.csdn.net/huangkaiyue1/article/details/42081299文章在mips平台下编译出现的错误,将config.h中的#define HAVE_LOG2F 1改成0就ok了。
如果出现“libx264.a(pixel-a.o) for Cortex-A8 erratum because it has no mapping symbols.”的话,参考http://blog.csdn.net/lngwu/article/details/49338043在libx264的Makefile中含有(strip) -x的地方加上 -K \$$a -K \$$t -K \$$d 即可。
0 0
- Android编译供ffmpeg使用的libx264
- 使用NDK交叉编译ffmpeg+libx264找不到libx264的解决方法
- android ffmpeg libx264编译记录
- 【iOS开发】编译libx264和带libx264的FFMpeg包
- 使用android ndk交叉编译libx264的编译脚本
- Android FFMPeg(二)——FFMpeg+libx264编译
- Android移植带有libx264实现的ffmpeg
- MAC系统下利用NDK编译可供Android使用的FFmpeg(3.2.4)库
- 编译Android下可用的FFmpeg(包含libx264与libfdk-aac)
- 编译Android下可用的全平台FFmpeg(包含libx264与libfdk-aac)
- libx264、ffmpeg、SDL交叉编译
- ffmpeg + x264 编译提示libx264 not found 的解决方法
- linux 编译安装ffmpeg 与libx264的方法
- linux下编译支持librtmp、libx264、libfaac的ffmpeg
- 编译各个架构的libx264-android脚本
- ffmpeg / libx264 build for ANDROID
- ffmpeg / libx264 build for ANDROID
- FFMPEG Android (3) enable libx264
- Codeforces Round#383C. Arpa's loud Owf and Mehrdad's evil plan
- 什么是死锁,产生的原因,如何避免死锁
- ajax的三个版本
- OCR常见汉字
- 中科每时每客WiFi客流名词解释
- Android编译供ffmpeg使用的libx264
- iOS:编译问题Presenting view controllers on detached view controllers is discouraged
- 在自己的电脑上搭建服务器(申明:来源于网络)
- BZOJ1778: [Usaco2010 Hol]Dotp 驱逐猪猡
- Nginx1.10+Tomcat7+Redis-X64-3.05+JDK7实现负载均衡和session共享(win7)
- java的动态代理机制详解
- 台式电脑调节屏幕亮度 只有一个键
- JavaScript小记
- ruby关于创建唯一一条数据的高级做法