Open mengzhidaren opened 7 years ago
你看看这个 https://github.com/wysaid/android-gpuimage-plus/issues/93 里面有编译好的, 看看这个有没有问题?
这个留言我试过了的 最早就是用这个角本编译的 最近线上项目报错才知道 库的兼容性有问题 现在换成你的角本还是有问题 但用你线上的android-gpuimage-plus编译好的.so就没问题 现在是一加载.so直接进程闪退不能捕获异常
我编译用的ffmpeg版本是 2.8.6, 来源是 git://source.ffmpeg.org/ffmpeg.git x264 来源 http://git.videolan.org/git/x264.git 用的是去年的某个版本 下面是编译x264用的参数:
#!/bin/bash
echo "###### 开始编译 x264 ######"
SOURCE=$TARGET_X264_DIR
cd $SOURCE
#PREFIX指定的是编译输出路径,不指定默认是/usr/local/lib和/usr/local/include
#PREFIX=/usr/local/x264
EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__"
EXTRA_LDFLAGS="-nostdlib"
./configure \
--cross-prefix=$CROSS_PREFIX \
--extra-cflags="$EXTRA_CFLAGS" \
--extra-ldflags="$EXTRA_LDFLAGS" \
--enable-static \
--enable-pic \
--enable-strip \
--disable-cli \
--host=arm-linux \
--sysroot=$SYSROOT
make clean
make STRIP=-j4 install
cd ../
然后下面是编译ffmpeg用的参数
#!/bin/bash
echo "###### 开始编译 ffmpeg ######"
SOURCE=$TARGET_FFMPEG_DIR
cd $SOURCE
ADD_H264_FEATURE="--enable-encoder=aac \
--enable-decoder=aac \
--enable-gpl \
--enable-encoder=libx264 \
--enable-libx264 \
--extra-cflags=-I/usr/local/include \
--extra-ldflags=-L/usr/local/lib "
function build_one_so
{
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--disable-avdevice \
--disable-avfilter \
--enable-small \
--enable-asm \
--enable-neon \
--cross-prefix=$CROSS_PREFIX \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--disable-parsers \
--enable-parser=aac \
--enable-parser=h264 \
--disable-encoders \
--disable-decoders \
--enable-decoder=h264 \
--disable-network \
--disable-protocols \
--enable-protocol=file \
--disable-filters \
$ADD_H264_FEATURE
make clean
make -j4
make install
}
build_one_so
试了一天了 放弃了 不是版本问题就是 --extra-cflags 和--extra-ldflags这个两参数有问题 这个老cpu淘汰3年多了 应该是属于armv5,armv6, vfp, neon其中一个 但我传参 -mfpu=vfp 试了半天都不行 不适配它们了,有点浪费时间,降版本一定能行但我不想降,谢谢回复
大师兄你好 上次问了问题一直没说解决方法今天突然想起来这个bug 就顺便说下解决方法 先说下原因 测试不支持的cpu 如:魅族2的手机 m045 cpuinfo=Features : swp half thumb fastmult vfp edsp neon vfpv3 tls 然后其它手机的cpu cpuinfo=Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 解决方法1 FileReader fileReader = new FileReader("/proc/cpuinfo"); 读取cpuinfo配置信息 不支持vfpv4就别加载ffmpeg.so文件了 解决方法2 修改编译器选项配置 gcc选择用-mfpu=vfpv3-fp16来指定为vfp协处理,而-mfpu=neon-vfpv4等就能指定为NEON+VFP结构 不过我是方法是推荐不加载.so文件,连vfpv4都不支持就别兼容这么老的机器了放弃最好还省事速度还快很多
👍
大师兄你好,我用你的FFmpeg-Android角本编译好的armeabi-v7库libbzffmpeg.so在部分低配手机上会闪退比如:魅族2等 我也试着自已编译了下,在其它主流手机也没什么问题 但是低配手机还是不兼容还是闪退,但换用你的android-gpuimage-plus编译好的armeabi-v7库libffmpeg.so就没问题,能给点帮助吗
···