ijkplayer ffmpeg android独立编译
2016-06-05 18:08
447 查看
ijkplayer中ffmpeg编译前会需要生成android standalone工具链,其他的编译步骤基本跟标准ffmpeg的编译相同。
其编译主要依赖两个脚本,
(1)是顶级目录下config/module.sh
(2)是android/contrib/tool/do-compile-ffmpeg.sh中关于cross compile相关的内容。
于是我就自助了一个ffmpeg编译脚本。简单说明下,ijkplayer中是通过link *.o 成shared library。我查了下gcc本身支持将.a直接链接成.so库,即通过-Wl,–whole-archive参数。
其编译主要依赖两个脚本,
(1)是顶级目录下config/module.sh
(2)是android/contrib/tool/do-compile-ffmpeg.sh中关于cross compile相关的内容。
于是我就自助了一个ffmpeg编译脚本。简单说明下,ijkplayer中是通过link *.o 成shared library。我查了下gcc本身支持将.a直接链接成.so库,即通过-Wl,–whole-archive参数。
#!/bin/bash export candidates_dir="/xx/candidates" build_ffmpeg() { source ijkplayer/config/module.sh cd ffmpeg make distclean FF_CFG_FLAGS="" FF_CFLAGS="" if [ "$1" = "armv7a" ]; then FF_CROSS_PREFIX=arm-linux-androideabi FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm --enable-neon --enable-thumb" fi BUILD="--enable-static --disable-shared" FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-prefix=${FF_CROSS_PREFIX}- --enable-cross-compile --target-os=linux --enable-pic --enable-asm --enable-inline-asm --enable-optimizations --enable-debug --enable-small" FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv7-a -mfloat-abi=softfp -mthumb" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS" ./configure --prefix=${candidates_dir} ${FF_CFG_FLAGS} ${COMMON_FF_CFG_FLAGS} $BUILD --extra-cflags="-I${candidates_dir}/include $FF_CFLAGS $FF_EXTRA_CFLAGS" --extra-ldflags="-L${candidates_dir}/lib $FF_DEP_LIBS $FF_EXTRA_LDFLAGS" --extra-libs="-ldl" make -j4 make install cd - cd ${candidates_dir}/lib ${FF_CROSS_PREFIX}-gcc -shared -fPIC -o libijkffmpeg.so -Wl,--no-undefined -Wl,--whole-archive -lm -lz libavformat.a libavcodec.a libavutil.a libavfilter.a libswresample.a libswscale.a -Wl,--no-whole-archive -lgcc } build_ffmpeg armv7a
相关文章推荐
- Picasso入门教程(十)图片旋转和变换
- Chronometer
- Android动画机制与使用技巧(五)——Android 5.X SVG 矢量动画机制
- Android数据存储之——操作raw和assets目录下的文件
- Rxjava Rxandroid入门基础
- Android 自定义View
- Android开发之实现百度地图定位功能
- android Activity实现从底部弹出菜单或窗口
- Android 启动模式 launchMode
- Android中AlertDialog使用
- Android Studio工作中如何改变(设置)选择的最小SDK版本
- java/android 设计模式学习笔记(6)---适配器模式
- Android中贝塞尔曲线的使用
- android studio进行NDK开发
- [Android]RecyclerView的使用与深入分析
- Android之如何解决部分手机拍照拍出来的照片是黑色
- Android 单元测试
- Android MINA框架之实战总结(一) Mina连接,断开,重连
- 实习入职第十六天:android:ellipsize="end"
- Android pull解析xml文件