android 使用 ffmpeg 进行视频转码(一)

本文介绍如何在Ubuntu 16.04.2 LTS环境下使用NDK编译FFmpeg 2.6.9版本,生成适用于Android平台的库文件。通过一系列命令及脚本设置,最终生成可用于Android开发的FFmpeg组件。

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

以下步骤在 Ubuntu 16.04.2 LTS 下完成

第一步:到 ffmpeg 官网 下载 ffmpeg-2.6.9.tar.gz 包到 study/目录并解压,然后给文件夹读写权限。这里选择 2.6.9 版本,因为目前这个版本比较稳定

> mkdir study/ 
> cd study
> wget ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz
> tar -xvf ffmpeg-2.6.9.tar.gz
> sudo chmod -R 777 ffmpeg-2.6.9

第二步:进入ffmpeg-2.6.9 文件夹,然后新建 build_android.sh 文件

> cd ffmpeg-2.6.9
> touch build_android.sh

文件中添加如下内容:

#!/bin/bash
make clean
export NDK=/home/user/IDE/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"

./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

其中以下三个地方需要修改

export NDK=你的 NDK 所在路径
export SYSROOT=你的NDK中的平台
export TOOLCHAIN=你的 NDK 工具链交叉编译环境

一般情况下,只要配置好 NDK 路径即可,SYSROOTTOOLCHAIN可以不做修改,如果需要修改,请根据自己的 NDK 路径情况进行修改。其他配置参数不用改动

第三步:给 build_android.sh 添加可执行权限,并运行该脚本

> sudo chmod +x build_android.sh
> sudo ./build_android.sh

运行完成后,会在 ffmpeg-2.6.9 文件夹下生成 android 目录,里面的内容如下:

arm
├── include
│   ├── libavcodec
│   ├── libavdevice
│   ├── libavfilter
│   ├── libavformat
│   ├── libavutil
│   ├── libpostproc
│   ├── libswresample
│   └── libswscale
└── lib
    ├── libavcodec-56.so
    ├── libavdevice-56.so
    ├── libavfilter-5.so
    ├── libavformat-56.so
    ├── libavutil-54.so
    ├── libpostproc-53.so
    ├── libswresample-1.so
    ├── libswscale-3.so

其中 include 目录下存放 ffmpeg 八大模块的头文件,lib 则存在放着编译后生成的带版本号的 .so 库文件。这些文件后续在使用 android NDK 进行 ffmpeg 视频转码编程中需要用到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值