欢迎使用CSDN-markdown编辑器

来源:互联网 发布:dnf深度优化启动加速 编辑:程序博客网 时间:2024/05/21 11:20

Android 网络摄像头开发笔记(1)

ffmpeg 编译篇

编译环境
System:ubuntu14.04
NDK: android-ndk-r8b-linux-x86.tar.bz2
SDK: android-sdk_r23.0.2-linux.tgz
FFMPEG: ffmpeg-2.4.3

ffmpeg 配置文件(config_make.sh)

#!/bin/bashNDK=/home/username/work/tools/android-ndk-r8bPLATFORM=$NDK/platforms/android-8/arch-arm/PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86LOCAL_ARM_NEON=trueCPU=armv7-aPREFIX=./android/$CPU./configure --target-os=linux \    --prefix=$PREFIX \    --enable-cross-compile \    --arch=arm \    --enable-nonfree \    --enable-asm \    --cpu=cortex-a8 \    --enable-neon \    --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \    --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \    --nm=$PREBUILT/bin/arm-linux-androideabi-nm \    --sysroot=$PLATFORM \    --disable-ffmpeg \    --disable-ffplay \    --disable-ffprobe \    --disable-ffserver \    --disable-shared \    --enable-static \    --enable-swscale \    --enable-avutil \    --enable-swresample \    --enable-avformat \    --enable-avcodec \    --enable-avfilter \    --enable-avdevice \    --enable-pthreads \    --disable-yasm \    --enable-zlib \    --enable-pic \    --enable-small \    --enable-gpl \    --enable-decoder=mjpeg --enable-demuxer=mjpeg --enable-parser=mjpeg \    --enable-demuxer=image2 --enable-muxer=mp4make cleanmake  -j4 install$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib  -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavformat/libavformat.a libavcodec/libavcodec.a libswscale/libswscale.a  libpostproc/libpostproc.a libavutil/libavutil.a  libavfilter/libavfilter.a libavdevice/libavdevice.a libswresample/libswresample.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a

把这个文件放到ffmpeg根目录下,直接运行后可生成android的文件夹,里面有.so 的动态文件,因为我没有–disable-everything,所以很多选项都是默认开启的,.so的库文件有40多M,链接到Android的工程里面后就只有6m左右了。如果觉得过大,还要裁剪,就需要–disable-everything ,然后把需要的enable ,为了调试方便,暂且不去关吧。

编译问题
- NDK版本问题 :在ubuntu10.04 _x64上我用NDK_08b版本编译成了并运行也是好的,但是在14.04_x64上,我用ndk_10d_x86_64的版本编译ffmpeg 2.5.3成功后,播放视频的时候报atof 未定义,这个问题纠结了我很久,因为项目紧张,最后也没有解决,最后切回ffmpeg2.4.3,用ndk_08b 编译运行OK。各位有遇到这个问题的说下解决办法吧。

0 0