ITPub博客

首页 > 移动开发 > ANDROID > 太难了,面试因不精通音视频开发被挂,终于弄到大厂内部578页的Android NDK学习宝典!

太难了,面试因不精通音视频开发被挂,终于弄到大厂内部578页的Android NDK学习宝典!

原创 ANDROID 作者:南方吴彦祖_蓝斯 时间:2020-10-22 14:41:59 0 删除 编辑

前言

同NDK技术的渊源始于3年前,使用 so文件的时候了解到NDK技术,并且C语言一直是强项,就鼓捣起NDK开发。在 AndroidStduio还没推广的年代,基于 eclipse搭建NDK开发环境需要安全依赖开发工具,并且调试起来具备难度。随后 AndroidStudio也先后支持 nkd-buildcmake使用NDK开发。

什么是NDK

Android NDK 是一组允许您将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。

在 Android 应用中使用原生代码的应用场景

  • 在平台之间移植其应用
  • 重复使用现有库,或者提供其自己的库供重复使用
  • 在某些情况下提高性能,特别是像游戏这种计算密集型应用

在日常App开发中,难免有些功能是需要借助NDK来完成的,比如现在常见的音视频处理等,今天就以ffmpeg入手,来学习下Android NDK开发的套路。

今天, 高能的地方来了!大厂内部出品的“AndroidNDK 模块开发宝典”分享给大家,从原理到实战,一应俱全!这份宝典主要涉及以下几个方面:

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

NDK 模块开发

主要内容:

  • C++与 C#数据类型总结
  • C 与 C++之内存结构与管理
  • C 与 C++之预处理命令与用 typedef 命名已有类型
  • C 与 C++之结构体、共用体
  • C 与 C++之指针
  • C/C++ 之多线程机制
  • C/C++ 之函数与初始化列表

JNI 模块

主要内容:

  • JNI 开发之 静态注册与动态注册

静态注册、动态注册、JNINativeMethod、数据类型映射、jni 函数默认参数

  • JNI 开发之方法签名与 Java 通信

Android NDK 开发 JNI 类型签名和方法签名、JNI 实现 java 与 c/c++相互通讯

  • JNI 开发之局部引用、全局引用和弱全局引用

Native 开发工具

主要内容:

  • 编译器、打包工具与分析器

十大最受欢迎的 React Native 应用开发编辑器、react-native 打包流程

  • 静态库与动态库

  • CPU 架构与注意事项

ABI 管理、处理 CPU 功能、NEON 支持

  • 构建脚本与构建工具

环境搭建、NDK 项目、Cmake、Makefile

  • 交叉编译移植

FFmpeg 编译、FFmpeg+LIBX264+FACC 交叉编译 实现 264 流录制、移植 FFmpeg 在 arm 交叉编译时遇到的问题、FFmpeg 交叉编译、X264 FAAC 交叉编译、解决所有移植问题

  • AS 构建 NDK 项目

配置 NDK 环境、建立 app 项目、生成.h 头文件、创建 C 文件,实现 native 方法、jni.h 文件

Linux 编程

  • Linux 环境搭建,系统管理,权限系统和工具使用(vim 等)

Linux 环境的搭建、Linux 系统管理操作(25 个命令)

  • Shell 脚本编程

Shell 脚本、编写简单 Shell 脚本、流程控制语句、计划任务服务程序

底层图片处理

  • PNG/JPEG/WEBP 图像处理与压缩

四种图片格式、推荐几种图片处理网站、squoosh 在线无损图片压缩工具,JPG/webP/PNG/ 互转

  • 微信图片压缩

计算原始宽高、计算近似宽高、第一次采样获取目标图片、循环逼近目标大小

  • GIF 合成原理与实现

GIF 图片的解析、GIF 图片的合成(序列图像合成 GIF 图像)

音视频开发

  • 多媒体系统

Camera 与手机屏幕采集、图像原始数据格式 YUV420(NV21 与 YV12 等)、音频采集与播放系统、编解码器 MediaCodec、MediaMuxer 复用与 MediaExtractor

  • FFmpeg

ffmpeg 模块介绍、音视频解码,音视频同步、I 帧,B 帧,P 帧解码原理、x264 视频编码与 faac 音频编码、OpenGL 绘制与 NativeWindow 绘制

  • 流媒体协议

RTMP 协议、、音视频通话 P2P WebRtc

  • OpenGL ES 滤镜开发之美颜效果

高斯模糊、高反差保留、强光处理、融合

  • 抖音视频效果分析与实现

流程列表、视频拍摄、视频编辑、视频导出

  • 音视频变速原理

变速入口分析、音频变速实现、视频变速实现

机器学习

  • Opencv

  • 图像预处理

灰度化和二值化、腐蚀与膨胀、人脸检测、身份证识别

最后

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

Android NDK终极学习宝典

现在面试问的很多东西,都是原理。

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图,以上资源均免费分享,以上内容均放在了开源项目: github  中已收录,大家可以自行获取。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69983917/viewspace-2728788/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
不定期分享自己开发几年来收录整理的几十套腾讯、头条、阿里、美团等公司19年的面试题,其中把技术点整理成了视频和PDF,包含知识脉络 + 诸多细节,获取这些安卓资料请加 WX:X1524478394

注册时间:2020-09-15

  • 博文量
    50
  • 访问量
    19179