接触Android音视频这一块已经有一段时间了,跟普通的应用层开发相比,的确更花费精力。期间为了学习音视频的录制,编码,处理也看过大大小小的几十个项目。总体感觉就是知识比较零散,对刚入门的朋友比较不友好。所以才萌生了整理一个Android音视频学习路线的想法,系统的学习效果肯定要远好于零零散散的补充知识。

先来看我自己总结的一个学习大纲图:

上图看的只是大纲,具体的音视频的要学习的知识点非常多,算是一条不归路。但是要学到能混口饭吃还是不难的,而且学好了肯定不只是混一口饭。 找个现在的招聘信息给大家点信心,可以看到,待遇还是很可观的。

好了,回归正题。

光看大纲,大家都知道要学习音视频录制,编码,处理,但是具体不知道怎么做,也不知道怎么入门。我自己在入门的时候也一样,靠着搜索引擎自己一点一点的积累,在这里当然要谢谢在该领域无私奉献的大佬们。所以在这里,我会对知识进行细化,运用的具体的场景中去,理论结合代码,更好的帮助掌握。

下面是我整理的学习路线,相信我,如果你认真学完了,你一定会成为音视频人才招聘市场的香饽饽~~

一、初级入门篇:

一、绘制图片

  1. ImageView 绘制图片

  2. SurfaceView 绘制图片

  3. 自定义 View 绘制图片

二、AudioRecord API详解

三、使用 AudioRecord 实现录音,并生成wav

  • 创建一个AudioRecord对象
  • 初始化一个buffer
  • 开始录音
  • 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。
  • 关闭数据流
  • 停止录音

四、用 AudioTrack 播放PCM音频

1.AudioTrack 基本使用

  • MODE_STATIC模式
  • MODE_STREAM模式

2.AudioTrack 详解

  • 音频流的类型
  • Buffer分配和Frame的概念
  • AudioTrack构造过程
  1. AudioTrack 与 MediaPlayer 的对比
  • 区别
  • 联系
  • SoundPool

五、使用 Camera API 采集视频数据

1.预览 Camera 数据

2.取到 NV21 的数据回调

六、使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件

1.MediaExtractor API介绍

2.MediaMuxer API介绍

3.使用情境

七、MediaCodec API 详解

1.MediaCodec 介绍

2.MediaCodec API 说明

3.MediaCodec 流控

  • 流控基本概念
  • Android 硬编码流控
  • Android 流控策略选择

由于文章篇幅受限,剩余内容过多,文中插图有限,下文只能截图目录展示:

所有知识点详细内容都整理在了开源项目【GitHub】,有需要的可以自取。

二、中级进阶篇:

  • Android OpenGL ES 开发(一): OpenGL ES 介绍
  • Android OpenGL ES 开发(二): OpenGL ES 环境搭建
  • Android OpenGL ES 开发(三): OpenGL ES 定义形状
  • Android OpenGL ES 开发(四): OpenGL ES 绘制形状
  • Android OpenGL ES 开发(五): OpenGL ES 使用投影和相机视图
  • Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
  • Android OpenGL ES 开发(七): OpenGL ES 响应触摸事件
  • Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
  • Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
  • Android OpenGL ES 开发(十): 通过GLES20与着色器交互
  • 使用 OpenGL 显示一张图片
  • GLSurfaceviw 绘制 Camera 预览画面及实现拍照
  • 使用OpenGL ES 完成视频的录制,并实现视频水印效果

高级探究篇:

  • 深入学习音视频编码,如H.264,AAC,研究使用开源编解码库,如x.264,JM 等
  • 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
  • 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
  • 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
  • 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
  • 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能

音视频编解码技术

  • 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
  • 音视频编解码技术(二):AAC 音频编码技术

流媒体协议

  • 流媒体协议(一):HLS 协议
  • 流媒体协议(二):RTMP协议

多媒体文件格式

  • 多媒体文件格式(一):MP4 格式
  • 多媒体文件格式(二):FLV 格式
  • 多媒体文件格式(三):M3U8 格式
  • 多媒体文件格式(四):TS 格式
  • 多媒体文件格式(五):PCM / WAV 格式

FFmpeg 学习记录

  • FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
  • FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay
  • FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg
  • FFmpeg命令行工具学习(四):FFmpeg 采集设备
  • FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度
  • FFmpeg 学习(一):FFmpeg 简介
  • FFmpeg 学习(二):Mac下安装FFmpeg
  • FFmpeg 学习(三):将 FFmpeg 移植到 Android平台
  • FFmpeg 学习(四):FFmpeg API 介绍与通用 API 分析
  • FFmpeg 学习(五):FFmpeg 编解码 API 分析
  • FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析
  • FFmpeg 结构体学习(一): AVFormatContext 分析
  • FFmpeg 结构体学习(二): AVStream 分析
  • FFmpeg 结构体学习(三): AVPacket 分析
  • FFmpeg 结构体学习(四): AVFrame 分析
  • FFmpeg 结构体学习(五): AVCodec 分析
  • FFmpeg 结构体学习(六): AVCodecContext 分析
  • FFmpeg 结构体学习(七): AVIOContext 分析
  • FFmpeg 结构体学习(八):FFMPEG中重要结构体之间的关系

更多目录截图:

总结:以上就是关于音视频的资料最强整理和概括了(还有部分内容没有截图出来),相信应该是全网最全了,所有资料都是免费分享给大家的,也省去了对音视频感兴趣的小伙伴们四处找资料的时间,如果你正好需要可以点此处免费获取

音视频开发的前景,相信大家从相关的招聘网站上就可以看到,不管是流媒体开发还是音视频处理开发,都是大量招人的,并且由于入门门槛相对较高,学习周期长,薪资也是居高不下。

另外:小编还收集整理一些音视频相关配套视频,相信能使大家学习起来更加快速有效:

文中所有资料都是免费分享给大家的,只需你动动手指点击此处就可直达免费领取方式了。

Android架构师之路很漫长, 一起共勉吧!学习之路犹如逆水行舟,不进则退,如果你松懈了, 那么你就退步了,而在Android开发工作中没有一门吃香独特的技术,想拿高薪也只能是望尘莫及的。做个勤奋向上的人,加紧学习,抓住中心,宁精勿杂,宁专勿多。

如果你正好需要这份完整版Android音视频开发,只需你多多支持我这篇文章。

快速入手通道:(点这里)下载!诚意满满!!!

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

Android开发音视频方向学习路线及资源分享,学完还怕什么互联网寒冬?的更多相关文章

  1. Electron 开发音视频

    废话不多说,咱直接进入正题! 创建 Electron 项目 前提条件 在使用Electron进行开发之前,需要安装 Node.js. 要检查 Node.js 是否正确安装,请在您的终端输入以下命令: ...

  2. Android开发之ExpandableListView扩展(BaseExpandableListAdapter的使用)(完整版)

    Android开发之ExpandableListView扩展(BaseExpandableListAdapter的使用)(完整版)

  3. Java后端完整学习路线及资源记录

    Java后端完整学习路线及资源记录 Java语法基础 书籍教程: 视频教程: IDEA的使用 视频教程:JAVA开发利器-IntelliJ IDEA使用教程 Servlet和Web基础 书籍教程: 视 ...

  4. java学习路线(好资源大家分享)

    对于入门java将近两年的时间,曾经迷惘过,一直想知道java的具体学习路线,看过了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,发现没有一个符合我个人需求的学习路线,根 ...

  5. PHP学习课程和培训方向学习路线分享

    php语言的优越性,集结了很多的开发爱好者,无论行业前景和个人发展来说,php正飞速的发展,php在不断兼容着类似closures和命名空间 等技术,同时兼顾性能和当下流行的框架.版本是7之后,一直在 ...

  6. Java全栈方向学习路线

    前端方向 前端基础 HTML --> https://www.w3school.com.cn/html/index.asp CSS --> https://www.w3school.com ...

  7. C++实现RTMP协议发送H.264编码及AAC编码的直播软件开发音视频

    RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系F ...

  8. Android开发之Handler的用法(源码分享)

    Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.. 当应用程序启动时.Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发. ...

  9. Python学习的十个阶段,学完神功大成,对应一下看看你自己在哪个阶段

    大家好,我是白云. 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. 阶段一:Python基础[ 初入江湖] Linux基础 目标: ...

随机推荐

  1. 32、sed命令详解

    32.1.sed介绍: 1.sed(sed软件常称做)是流编辑器,是操作.过滤.和转换文本内容的工具: 2.sed的模式空间和保持空间介绍: (1)模式空间:sed处理文本内容行的一个临时缓冲区,模式 ...

  2. 10、ssh中scp、sftp程序详解

    每次都是全量拷贝,rsync是增量拷贝 10.1.scp的基本用法: -r:拷贝目录; -p: 保持属性: -l:限速设置; scp -P52113 /etc/hosts lc@172.16.1.41 ...

  3. Jenkins 凭证 Devops 的粘合剂

    大家好,我是小猿来也,一个热衷于搞 Devops 自动化的 Java 程序猿. 万事具备,只欠东风.当我决定大搞特搞 Devops 的时候,Jenkins 凭证却傻傻分不清. 玩 Devops 的小伙 ...

  4. 玩Aarch64最方便的方法

    译至:http://d.hatena.ne.jp/embedded/20140819/p1 虽然Aarch64(ARM64)的板子还很难到手.但通过使用qemu就能执行Aarch64的用户空间程序.利 ...

  5. 【分布式】CAP理论及其应用

    CAP Theorem CAP 指的就是 "consistency 一致性","availability 可用性" "partition-tolera ...

  6. Apache Flink目录遍历(CVE-2020-17519)

    1.漏洞描述 2021年1月5日,Apache Flink官方发布安全更新,修复了由蚂蚁安全非攻实验室发现提交的2个高危漏洞,漏洞之一就是Apache Flink目录遍历漏洞(CVE-2020-175 ...

  7. 「AGC030D」Inversion Sum

    「AGC030D」Inversion Sum 传送门 妙啊. 由于逆序对的个数最多只有 \(O(n^2)\) 对,而对于每一个询问与其相关的逆序对数也最多只有 \(O(n)\) 对,我们可以对于每一对 ...

  8. python08篇 发邮件和异常处理

    一.发邮件 import yamail smtp = yamail.SMTP(host='smtp.qq.com', # 改成自己邮箱的服务器即可,其他的比如smtp.163.com user='65 ...

  9. python使用笔记19--网络操作

    1.get请求 1 import requests 2 import datetime 3 #get请求 4 url = 'http://api.nnzhp.cn/api/user/stu_info' ...

  10. js学习-apply,call,bind的实现

    目录 apply call bind demo apply 简单说:构建一个和调用aplly函数一样的字符串,用eval执行,完了之后删除掉,最后返回执行的结果. Function.prototype ...