安卓项目中要用到FFMPEG,去官网下载了一个最新的版本,122M,下载下来编译成了静态文件,导入到工程中,用NDK编译native的时候提示avcodec_init找不到,一看头文件avcodec.h中这个函数的声明都没有了,再找到一个老版本的,avcodec.h头文件中都 有这个函数的声明,新版本是怎么回事,难道修改了么?FFMPEG视频那一块的函数在avcodec.h都找不到了,提示找不到函数,是怎么回事啊 !!!!!!!!!请教各位前辈了

解决方案 »

  1.   

    下载下来编译成了静态文件,导入到工程中?说明你ffmpeg已经编译通过,只是调用ffmpeg的api的文件 编译出错?
      

  2.   

    我有导入到工程中啊,FFMPEG是2.0的哦,ndk-build的时候就提示avcodec_init找不到,头文件avcodec.h中已经没有了这个函数的声明,我用老版本0.9.3版本的FFMPEG,编译出了静态文件,然后倒入到工程中,NDK编译的时候提示error: undefined reference to 'avcodec_init'可能是我编译的静态文件有问题吧我是参照http://zzhhui.blog.sohu.com/244819188.html来编译的找到一个调用成功的http://www.jouhu.com/blog/?p=497,我看了一下它的静态文件
    libavcodec.a有20多M我编译出来的才1K不知道是什么原因,难道是编译过程中的原因么
      

  3.   

    是不是名称更改了,ffmpeg中有个log是指出哪些名称改了的,官网上有
      

  4.   

    ffmpeg几个大版本之间是不兼容的
      

  5.   

    是我mk文件没有写好啦,现在可以编译了,但是有个问题,编译出来的文件访问
    avformat_open_input(&pFormatCtx, "rtmp://xxx.xx.87.58/e/crovd1", NULL, NULL);调用不成功,但是我rtmp的路径是对的,用其它工具能访问到视频,config.h跟config.mak文件中的network我都是打开了的
    不知道编译的时候还要设置什么,我的config.sh文件如下
    #!/bin/bash
    PREBUILT=${NDK_ROOT}/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
    PLATFORM=android-18
    ARCH=--arch=arm
    ./configure \
    ${ARCH} \
    --target-os=linux --enable-cross-compile --cross-prefix=${PREBUILT}/bin/arm-linux-androideabi- \
    --extra-cflags=" -fPIC -DANDROID -std=c99 " \
    --enable-version3 \
    --enable-gpl \
    --enable-nonfree \
    --disable-stripping \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-encoders \
    --enable-protocol=tcp \
    --disable-devices \
    --enable-demuxer=rtsp \
    --enable-avfilter \
    --enable-network \
    --enable-decoder=h264 \
    --disable-avdevice \
    --disable-asm \
    --enable-neon \
    --enable-armv5te \
    --sysinclude=${NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/include \
    --extra-ldflags="-Wl,-rpath-link=${NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib -L${NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib -nostdlib ${NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/crtbegin_static.o ${NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/crtend_android.o -lc -lm -ldl "希望大牛们指点一下啊
      

  6.   


    config.h跟confih.mak文件中的network还有跟RTMP有关的我都设置了,还有加入了librtmp还是不行
    avformat_open_input的时候打开不了视频流,不知道还要设置什么
      

  7.   

    测试了一下都可以打开本地SD卡里面的3GP文件,但是RTMP老是打开失败
      

  8.   

    要加入librtmp,把rtmp相关的设置设置成1