【Android音视频】ubuntu编译ffmpeg动态库

本文详细介绍了在Android环境下编译FFmpeg的过程,包括所需环境配置、编译脚本编写、常见问题解决及如何裁切编译。此外,还提供了配置不同扩展功能的方法,如libmp3lame等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章

https://blog.youkuaiyun.com/leixiaohua1020/article/details/47008825 雷霄骅

1. 编译环境

  • NDK:android-ndk-r15c

  • FFMPEG: ffmpeg-3.4.4

  • Android P: 21(该环境限制最少21)

  • Ubuntu:18.0.1

  • 部分安装库

      sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \ libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
    

2. 下载ffmpeg到本地,配置编译脚本

  • 下载到本地,官网:http://ffmpeg.org/

      git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
      cd ffmpeg
    
  • 修改configure文件,方便自动导出熟悉的文件名称

      #修改前,方便.so库自动生成我们熟知的命名
      #SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
      #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)'
    
  • arm编译脚本如下,替换下面编译平台NDK目录成你自己的

      #!/bin/bash 
      make clean 
      export NDK=/home/felix/wd500g/android-sdk/android-ndk-r14b 
      export SYSROOT=$NDK/platforms/android-21/arch-arm/ 
      export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 
      export CPU=arm
      export ARCH=arm 
      export PREFIX=$(pwd)/android/$CPU 
      export ADDI_CFLAGS="-marm" 
      ./configure --target-os=linux \
      --prefix=$PREFIX \
      --enable-shared \
      --disable-static \
      --disable-x86asm \
      --arch=arm \
      --disable-doc \
      --disable-symver \
      --enable-gpl \
      --disable-ffplay \
      --disable-ffprobe \
      --disable-ffserver \
      --disable-symver \
      --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
      --enable-cross-compile \
      --sysroot=$SYSROOT \
      --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
      --extra-ldflags="$ADDI_CFLAGS" \
       $ADDITIONAL_CONFIGURE_FLAG
      make clean
      make 
      make install
    

3. 问题修复(限于该环境配置):

  • 将libavcodec/opus_pvq.c文件的变量B0改成b0
  • 将libavcodec/hevc_mvs.c文件的变量B0改成b0,xB0改成xb0,yB0改成yb0
  • 将libavcodec/aaccoder.c文件B0变量替换成b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值