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

来源:互联网 发布:数据脱敏方式 编辑:程序博客网 时间:2024/06/05 18:52

以下步骤在 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/bashmake cleanexport NDK=/home/user/IDE/sdk/ndk-bundleexport SYSROOT=$NDK/platforms/android-9/arch-arm/export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64export CPU=armexport PREFIX=$(pwd)/android/$CPUexport 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_FLAGmake cleanmakemake 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 视频转码编程中需要用到。

PS:以上博文内容根据 动脑学院 Android 课程内容整理而成,如有侵权,请通知