Android开发工作两年,真的是感觉Android应用层开发没什么前景了,于是打算在网络安全,智能硬件,音视频这几个方向发展,考虑了一段时间,最终决定选择音视频。理由就不说了,既然选择了就要好好深耕这个领域。

我花了半年时间边工作边自学音视频,翻烂了国内外有效的教程和书籍,终于在上个月成功“挤进”了抖音音视频开发岗。这其中的辛酸留到日后再说,今天只想给大家分享一些关于学习音视频的干货。

说句实话,音视频自学起来困难重重,学习成本非常高,且效率低。主要有两方面的原因,一是音视频知识庞杂,通俗易懂的资料非常少;另一方面,网上充斥着大量的错误信息,使得很多初学者掉到坑里就爬不出来了。

我来举个例子,按照传统的音视频学习方法,学习音视频你首先要阅读大量的音视频规范/协议文档(如H264、MP4/FLV、RTP/RTCP等)。这些文档中的内容基本都以位为单位的,即每个二进制位的变化都代表不同的含义,这种文档极其枯燥,很难阅读。

在对文档熟悉的前提下,再进行代码的开发难度就“更上一层楼”了。这时你会发现,如果你对 C/C++ 使用不熟练,没有专门进行过训练的话,你就进入了炼狱般的状况,那是一种折磨。

好在现在有FFMPG、WebRTC 等开源库,大大降低了研发成本。但即使这样,对于小白同学来说学习音视频依然是十分困难的。

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构造过程

3. 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 流控策略选择

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

中级进阶篇:

  • 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音视频入门进阶学习手册,学完我成功“挤进”了抖音音视频开发岗相关推荐

  1. 未来十年的音视频,教科书级别的Android音视频开发教程,学完我成功“挤进”了抖音音视频开发岗

    未来的趋势 现在客户端卷的风起云涌,很多安卓开发者都是抱怨连天,上有闭灯苦读,下有图书馆黑丝诱惑.内卷之下,相比本来就堪忧的发量,前途未卜的迷茫带来的精神折磨更是雪上加霜 ,在这脉脉上的一位朋友给出了 ...

  2. 堪称教科书级别的Android音视频入门进阶学习手册,开源分享

    概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...

  3. Android基础知识~入门进阶,一步步走到高手

    Android基础知识~入门进阶,一步步走到高手 2011年09月01日 [b]希望新入手ANDROID设备的朋友认真阅读本帖,一些简单的问题就可以自己解决了!!! 一:基础知识[/b] [b]1.什 ...

  4. 2023年电音制作入门学什么软件,电音制作入门怎么学习

    电子音乐目前已经成为了年轻人的一大爱好,而全国各地随处可见的音乐节更是代表着电子音乐文化已经逐渐被年轻人所接受,在这样的大背景下,一些年轻人也开始了自己创作电子音乐的道路.然而编写电子音乐需要一定的条 ...

  5. Android 音视频入门/进阶教程

    后续的音视频文章,都会在这里更新 作为安卓开发仔,对音视频这块,一直是比较感兴趣的,所以,本着学习和记录的态度,我也把我所学的知识记录起来,希望对想音视频感兴趣的小伙伴有所帮忙. 一. 基础文章系列 ...

  6. 安卓笔记-视频版(还没学完)

    /Users/yangyangzi/Desktop/YangZi2/android/Android12/2019/视频学习.rtfd (公司电脑) 视频 一.控件:TextView:标签,用于显示内容 ...

  7. 创业项目之一短视频平台创业学习手册

    第一.新手开始了解的内容 1.确认好自己是要做创业社群 恋爱社群或者是继续做自己目前所从事的行业产 品的推广或者是具体产品的代销 因为只有确认好自己以后的发展方向才能具体确 认推广内容 因为抖音的吸粉 ...

  8. 推荐几个堪称教科书级别的 Android 音视频入门项目

    公众号回复:OpenGL,领取学习资源大礼包 在 直播 中有提到几个不错的开源项目,这里再重点推荐一下: 目前,市面上关于音视频学习的相关书籍并不多,而且即使看了书籍学了理论,最终还是要回归到代码上来 ...

  9. 城市售票网添加成功卡进网页声音提示音模块

    之前分别写了无头和有头,在固定时间内成功进入城市售票网站的方法,用的是输出网页文件HTML方式或者获取网页关键词的方式来判定,这篇文章则使用声音提示模块来进行判定. 只要在固定时间内成功进入网站,就发 ...

最新文章

  1. 打开chm文件不能显示内容的解决办法
  2. Hough变换的方法检测直线段,效果良好
  3. server2012 图文安装流程
  4. hdu 1712(分组背包)
  5. [USACO08JAN]跑步Running
  6. Utils.toDip()的用法
  7. 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
  8. new/delete和malloc/free的区别一般汇总
  9. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)
  10. 放球问题 组合数学 转自百度百科
  11. 阶段3 2.Spring_07.银行转账案例_6 测试转账并分析案例中的问题
  12. JS连续赋值与求值顺序
  13. JavaScript在线代码编辑器-技术选型
  14. linux 系统频率,[求助]Linux中的“超出显示频率范围”问题
  15. 天地三才阵——【Java三大特征】
  16. stl文件用proe怎么打开_3dmax怎么导入stl文件?如何将proe的文件导入3dmax进行渲染?...
  17. op07数据手册分析
  18. 品牌的价值 龚文祥的第六次跳槽
  19. 重磅|阿里云HBase Ganos全新升级,推空间、时空、遥感一体化基础云服务
  20. 《Unity 3.x游戏开发实例》一第2章 让我们从天空开始

热门文章

  1. 移动端和前端开发的共性
  2. windows10桌面鼠标右键出现卡顿解决方法
  3. 电脑桌面上没有计算机回收站,桌面上没有回收站,桌面没有回收站怎么找
  4. BIEE 11g 安装
  5. Oracle set timing on
  6. session是什么?
  7. 爬取哔哩哔哩网站数据
  8. tensorflow导入自己的数据集
  9. 计算企业发放的奖金根据利润提成
  10. java switch枚举类,Java 枚举 switch的用法