您的位置:首页 > 移动开发 > Android开发

[Cmake-Android音视频]NDK-r14b编译ffmpeg3.4支持neon,硬解码

2019-05-20 23:41 483 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/adolph_lu/article/details/90384620

编译环境

  • Ubuntu16.04 x86_64
  • Ffmpeg3.4
  • ndk-r14b

编译前的准备

ubuntu16.04 64位

http://releases.ubuntu.com/16.04.3/

下载ndk

https://dl.google.com/android/ndk/android-ndk-r14b-linux-x86_64.tar.bz2

下载ffmpeg

http://ffmpeg.org/releases/ffmpeg-3.4.tar.bz2

 

查看ubuntu的版本是32位还是64位

[code]uname -a

android-ndk需要和ubuntu版本的位数保持一致

安装make

[code]apt-get install make

安装vim

[code]apt-get install vim

编译步骤

1.创建目录

在ubuntu中/home下创建NDK文件夹,将下载好的android-ndk-r14b和ffmpeg3.4放到NDK文件夹

2.解压

解压android_ndk_r14b

[code]tar -jxvf android-ndk-r14b-linux-x86_64.tar.bz2

解压ffmpeg3.4

[code]tar -jxvf ffmpeg-3.4.tar.bz2

3.编写build_android.sh

在ffmpeg-3.4文件夹中创建build_android.sh文件

编写脚本,脚本如下,支持neon和硬解码

[code]#!/bin/bash

NDK=/home/NDK/android-ndk-r14b
#anroid 5.0
PLATFORM=$NDK/platforms/android-21/arch-arm
#交叉编译工具链
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#CPU架构
CPU=armv7-a

#输出路径
PREFIX=./android/$CPU

function buildFfmpeg
{
./configure \
--prefix=$PREFIX \
--target-os=android \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--cpu=armv7-a \
--sysroot=$PLATFORM \
--extra-cflags="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp" \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--enable-shared \
--enable-runtime-cpudetect \
--enable-gpl \
--enable-small \
--enable-cross-compile \
--enable-asm \
--enable-neon \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver\
--disable-postproc \
--disable-avdevice \
--disable-symver \
--disable-stripping

make -j16
make install
}

buildFfmpeg

需要将NDK=/mnt/f/ubuntu-workspace/ff/android-ndk-r14b这句替换为你的NDKl路径,如不清楚,可以cd到ndk目录,然后使用pwd命令,即可显示出ndk的路径。

4.编译脚本

[code]chmod +x build_android.sh
./build_android.sh

5.查看头文件和库文件

成功编译完成后会在ffmpeg-3.4/android/文件夹中生成一个armv7-a文件夹,这个文件夹就是我们所需要的头文件和动态库。

 

遇到的问题:

因为我是在window中用编辑器创建的build_android.sh,所以遇到了下面这个问题

如果使用./build_android.sh报如下错误

[code]-bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory

这是由于在window编辑build_android.sh的编码格式引起的。

可通过如下操作解决:

  • 查看该文件:vim build_android.sh
  • 查看该错误文件的格式(一般报错的文件格式是DOS):
[code]:set ff
  • 修改该文件格式为UNIX:
[code]:set ff=unix
  • 再保存
[code]:wq

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: