android音视频开发基础5-FFmpeg交叉编译+NDK简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DTJ_74/article/details/87905678

一分一秒,原来你也在这里。

目录

Android NDK

Android JNI:

交叉编译是什么:可以简单理解为,就是在一个平台上生成另一个平台上的可执行代码。

脚本是可以成功交叉编译的。。。


Android NDK

Android NDK 是一套允许您使用原生代码语言(例如C和C++) 实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。

简单来说就是android 软件开发包SDK工具集,用来扩展SDK功能。

主要包含相关组件:

  1. Api
  2. 交叉编译器
  3. 链接程序
  4. 调试器
  5. 构建工具
  6. 文档

  1. ndk-build:该shell脚本是Android NDK 构建系统的起始点。
  2. ndk-gdb:该shell脚本语序用GUN调试器调试原生组件。
  3. ndk-stack:该shell脚本帮助分析原生组件崩溃时的堆栈追踪。
  4. build:该目录包含AndroidNDK 构建系统的所有模块。
  5. platforms:该目录包含了支持不同Android目标版本的头文件和库文件。
  6. samples:包括了例子程序。
  7. sources:包含了可供人员导入到现有的Android NDK项目一些共享模块。
  8. toolchains:该目录包含目前Android NDK支持的不同目标机体系结构的交叉编译器。

什么是Shell脚本,可以查看 android音视频开发基础2--Shell脚本+linux命令

Android JNI:

JNI 是java程序设计语言功能的最强特征,JNI,全称为Java Native Interface,即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C++机型交互。。。5好理,总之好犀利。往后博客会介绍。


这个文章是接上一篇文章的,android音视频开发基础4--FFmpeg 入门

上一篇文章就简单介绍了相关操作,但是,android 交叉编译没有通过。

交叉编译是什么:可以简单理解为,就是在一个平台上生成另一个平台上的可执行代码。

先提供一个编译脚本。

#!/bin/bash
export TMPDIR=D:/ffmpeg/ffmpeg-3.3.9/tmpdir
NDK=D:/NDK/android-ndk-r10e
SYSROOT=$NDK/platforms/android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CPU=arm
PREFIX=D:/ffmpeg/ffmpeg-3.3.9/output/$CPU

ADDI_CFLAGS="-Os -fpic -marm"


function build_one
{
./configure \
--extra-libs=-lgcc \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-asm \
--enable-neon \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-pthreads \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-runtime-cpudetect \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j4
make install
}
build_one
read -p "Press any key to continue."

脚本是可以成功交叉编译的。。。

以上我用的相关版本已经在楼上脚本显示了。

好似 ndk 版本也有一定影响的。..

上一篇android音视频开发基础4--FFmpeg 入门

猜你喜欢

转载自blog.csdn.net/DTJ_74/article/details/87905678