美文网首页
(三)FFmpeg-4.3.1配合android-ndk-r21

(三)FFmpeg-4.3.1配合android-ndk-r21

作者: HannyYeung | 来源:发表于2021-11-29 14:20 被阅读0次

参考两个大佬文章应该就没问题

编译FFmpeg4.3.1 、x264并移植到Android_Vinson-CSDN博客
Android最简单的基于FFmpeg的例子(三)---编译FFmpeg成一个SO库 | binglingziyu的博客 (ihubin.com)

编译环境

  • Ubuntu
  • FFmpeg-n4.3.1
  • android-ndk-r21

编译前配置:

修改FFmpeg-4.3.1下的configure文件

修改前

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'  
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'  
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'  
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

修改后

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'  
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'  
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'  
SLIB_INSTALL_LINKS='$(SLIBNAME)'

添加编译脚本 build_android.sh

此次需要注意的是,这次是要编译成一个so,所以不能直接先编译成so,要全部编译成.a文件,所以需要修改的是:
--disable-shared
--enable-static \

#!/bin/bash

PREFIX=/home/it/ffmpeg-4.3.1/android/armeabi-v7a

TOOLCHAIN=/home/it/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64

build()
{
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--enable-small \
--enable-gpl \
--disable-doc \
--disable-programs \
--disable-avdevice \
--enable-cross-compile \
--target-os=android \
--arch=armeabi-v7a \
--cc=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-

sudo make clean
sudo make -j4
sudo make install
}

build

编译过后,会产生.a文件

1638166504(1).png

最后合成一个libffmpeg.so

进入刚生成.a文件的地方,创建一个sh编译文件union_ffmpegso.sh,添加如下编译命令:

echo "开始编译ffmpeg so"

#NDK路径.
export NDK=/home/liuf/ndk/android-ndk-r21

PLATFORM=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

PREFIX=$(pwd)


$TOOLCHAIN/bin/arm-linux-androideabi-ld \
-rpath-link=$PLATFORM/usr/lib \
-L$PLATFORM/usr/lib \
-L$PREFIX/lib \
-soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \
$PREFIX/libffmpeg.so \
    libavcodec.a \
    libavfilter.a \
    libswresample.a \
    libavformat.a \
    libavutil.a \
    libpostproc.a \
    libswscale.a \
    -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \
    $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a \

echo "完成编译ffmpeg so"

最后执行编译: sudo ./union_ffmpegso.sh
执行速度很快,在当前目录下会得到一个libffmeg.so文件

相关文章

  • (三)FFmpeg-4.3.1配合android-ndk-r21

    参考两个大佬文章应该就没问题 编译FFmpeg4.3.1 、x264并移植到Android_Vinson-CSDN...

  • (二)FFmpeg-4.3.1配合android-ndk-r21

    编译环境 UBuntu FFmpeg-4.3.1 android-ndk-r21b 修改FFmpeg-4.3.1下...

  • FFmpeg最新编译脚本for Android

    FFmpeg(ffmpeg-4.2.2 最新)+NDK(android-ndk-r21 最新) for Andro...

  • 编译FFmpeg 4.2.3

    1. 环境 android-ndk-r21 ffmpeg-4.2.3 openssl-1.1.1g ubuntu1...

  • 配合

    独木难成林,凡事靠配合! 成功靠配合! 合作靠配合! 家和配合! 发家致富靠配合! 今天的结果让三方都开心,你好!...

  • 三人的配合

    一位女士进店选衣服,此时A员工支持说多选几件一起试,顾客选了几件衣服进试衣间试衣服,当几件衣服都试完都说还可以,顾...

  • 配合

    1.反思:这几天儿子发脾气,锁门,不沟通,我觉察是自己没有耐心倾听他的请求,没有尊重、信任他,让他起愤恨的心,如果...

  • 配合

    今天交接班时,这是两位顾客走了进来,A导购上前去接顾客。 导购A:“Hello,didimax,欢迎试衣” 顾客:...

  • 配合

    此时脑子冒出,周五读书会中 周芳讲儿子买游戏机的事,茜妈指出,她对儿子的这份爱里有交换,有要求,想想以前...

  • 配合

    现在是凌晨3点14,我2点半起床抽的奶,抽奶的过程中突然想到一个之前发生的趣事。 记得是我上高中时候的事,全家一起...

网友评论

      本文标题:(三)FFmpeg-4.3.1配合android-ndk-r21

      本文链接:https://www.haomeiwen.com/subject/ttclxrtx.html