[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
相关文章推荐
- Android ffmpeg 3.4 JNI移植 NDK编译播放 ffserver 推送的 Rtsp 视频流
- [原]ffmpeg编译android 硬解码支持库 libstagefright
- AndroidStudio2.2.3版本使用CMake编译NDK工程(ffmpeg)
- window7 android-ndk-r10d 编译ffmpeg 3.4
- Android 音视频编解码系列(1)--ubuntu下ndk编译ffmpeg0.8.1
- Android本地视频播放器开发--NDK编译FFmpeg
- ffmpeg编译android 硬解码支持库 libstagefright
- Android本地视频播放器开发--NDK编译FFmpeg
- ffmpeg编译android 硬解码支持库 libstagefright(1)—— git-hub&nb
- ffmpeg编译android 硬解码支持库 libstagefright(1)—— git-hub&nb
- Android本地视频播放器开发--NDK编译FFmpeg
- ffmpeg for android 独立ndk以及android项目下编译 --ubuntu
- 支持C++ 11代码规范的 android NDK 编译
- windows下编译最新版ffmpeg3.3-android,并通过CMake方式移植到Android studio2.3中
- linux中使用NDK编译ffmpeg的android平台的可执行文件
- ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用
- FFmpeg Android端编译与集成(视频时长剪辑)
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三).so文件编译过程问题的解决
- 使用ubuntu14和ndk 编译ffmpeg在android平台的so动态库
- android-ndk-r14b 编译renderscript的BUG(Window平台下)