android 移植 ffmpeg (三) 测试用例(解决avcodec_find_encoder(AV_CODEC_ID_H264)返回为NULL的问题)

来源:互联网 发布:vb打开文件夹 编辑:程序博客网 时间:2024/06/07 03:16

使用ffmmpeg编译的时候,一般我们会用到H264编码,像这样使用的时候发现ffmpeg无法找到H264编码:

    AVCodec*  pCodec = avcodec_find_encoder(AV_CODEC_ID_H264);    if (!pCodec){        LOGE("Can not find encoder(AV_CODEC_ID_H264)!");//程序执行了这一句    }else{        LOGE("Can find encoder--------!\n");    }


经过百度和google发现,针对这种情况我们需要下载libx264的源码然后在本地编译安装,然后在编译ffmpeg的时候开启H264编码并指定libx264所在的路径。

安装H264的步骤如下:

     下载H264,解压,然后cd到解压后的目录里面,执行以下语句:

./configure --prefix=/usr/local/x264 --enable-shared --enable-static 


   其中 /usr/local/x264 就为我们要目录目录,编译完成之后,然后执行:

sudo make install

   

  如果没有什么意外的话,意味着H264安装成功了。安装成功后,我们需要修改build_andriod_mac.sh文件

#!/usr/bin/env bash#通过 --enable-gpl --enable-libx264 开启h264#以下方式引入第三方库来指定h264的安装路径,否则编译的时候不知道x264的位置,会提示: ERROR: libx264 not found#--extra-cflags="-I/usr/local/include/" \#--extra-ldflags="-L/usr/local/x264/lib" \#-–extra-ldflags="-L/usr/local/lib" \export NDK=/Users/pingzhang/Documents/tool/android-ndk-r13export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 export PLATFORM=$NDK/platforms/android-23/arch-arm  export PREFIX=$NDK/sources/ffmpeg/android  build_one(){  ./configure --target-os=linux \    --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a" \    --extra-cflags="-I/usr/local/include/" \    --extra-ldflags="-L/usr/local/x264/lib" \    -–extra-ldflags="-L/usr/local/lib" \<span style="white-space:pre"></span>--prefix=$PREFIX --enable-cross-compile \<span style="white-space:pre"></span>--enable-runtime-cpudetect --disable-asm \<span style="white-space:pre"></span>--arch=arm --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \<span style="white-space:pre"></span>--cross-prefix=$PREBUILT/bin/arm-linux-androideabi \<span style="white-space:pre"></span>--disable-stripping --nm=$PREBUILT/bin/arm-linux-androideabi-nm \<span style="white-space:pre"></span>--sysroot=$PLATFORM --enable-gpl --enable-shared --disable-static \<span style="white-space:pre"></span>--enable-small --disable-ffprobe --disable-ffplay --disable-ffmpeg \<span style="white-space:pre"></span>--disable-ffserver --disable-debug \    --enable-gpl --enable-libx264 \    --enable-decoder=h264  --enable-encoder=h264}    build_one  make clean  make  make install


然后重新编译即可,最后附上编译配置中的的几个文件:last_x264.tar.bz2(264源码),configure,build_andriod_mac.sh,Android.mk




Linux下编译带x264的ffmpeg的方法                     

http://blog.csdn.net/season_hangzhou/article/details/24399371





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 亲戚赖在家里住怎么办 食堂饭菜味道差该怎么办 被监视居住公安打电话睡着了怎么办 鱼缺氧浮上水面怎么办 车载低音炮有电流声怎么办 925纯银变黑了怎么办 银子放久了变黑怎么办 高铁票网上售空怎么办 高铁票出票失败怎么办 高铁票名字打错怎么办 高铁票姓名错了怎么办 高铁票弄丢了怎么办 用过的车票丢了怎么办 高铁票被水洗了怎么办 沈阳地铁卡丢了怎么办 火车票没写检票口怎么办 吃鸡听的脚步声距离太近怎么办 检票时车票丢了怎么办 高铁出站没检票怎么办 高铁来不及取票怎么办 被发现假的增值税发票怎么办 高铁票身份证验证失败怎么办 网上订的火车票查不到怎么办 已经参加工作想学个本科证怎么办 火车晚点耽误下一趟列车怎么办 门外装监控没有预留电线怎么办 框架柱主筋柱顶预留长度不够怎么办 遇到很嚣张的人怎么办 在地板砖上铺木地板卧室门怎么办 宝宝打预防针的本子丢了怎么办 宝宝打预防针本子丢了怎么办 打疫苗的本子丢了怎么办 麦客收割机麦秸里加麦粒怎么办 高铁乘务员身高不够怎么办 坐火车买到站票怎么办 买上车补票原票怎么办? 买的商务座补票怎么办 12306账号被别人登录怎么办 飞机不提供餐食怎么办 12306退票支付宝失败怎么办 12306重复支付怎么办支付宝