最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧。

音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整一个专题详细讲一讲~~目前的话,我先给出一个大的方向性的学习指南,希望对初学者有所帮助。

我一直相信带着 “任务” 去学习和实践,效率会高很多,因此我列出了一系列音视频相关的 “开发任务”,从简单到困难(当然,不一定非常严格和完美,部分任务先后可调整),大家在完成任务的过程中,遇到任何不懂的地方都要及时去 google,或者去请教身边的大牛,不放过任何一个疑点,相信大家会很快就能把音视频周边相关知识积累起来。

   《Android 音视频从入门到提高 —— 任务列表》

1. 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View

2. 在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件

3. 在 Android 平台使用 Camera API 进行视频的采集,分别使用 SurfaceView、TextureView 来预览 Camera 数据,取到 NV21 的数据回调

4. 学习 Android 平台的 MediaExtractor 和 MediaMuxer API,知道如何解析和封装 mp4 文件

5. 学习 Android 平台 OpenGL ES API,了解 OpenGL 开发的基本流程,使用 OpenGL 绘制一个三角形

6. 学习 Android 平台 OpenGL ES API,学习纹理绘制,能够使用 OpenGL 显示一张图片

7. 学习 MediaCodec API,完成音频 AAC 硬编、硬解

8. 学习 MediaCodec API,完成视频 H.264 的硬编、硬解

9. 串联整个音视频录制流程,完成音视频的采集、编码、封包成 mp4 输出

10. 串联整个音视频播放流程,完成 mp4 的解析、音视频的解码、播放和渲染

11. 进一步学习 OpenGL,了解如何实现视频的剪裁、旋转、水印、滤镜,并学习 OpenGL 高级特性,如:VBO,VAO,FBO 等等

12. 学习 Android 图形图像架构,能够使用 GLSurfaceviw 绘制 Camera 预览画面

13. 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4

14. 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等

15. 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器

16. 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能

17. 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能

18. 上面积累的经验,做一款短视频 APP,完成如:断点拍摄、添加水印、本地转码、视频剪辑、视频拼接、MV 特效等功能

相信我,如果你认真把所有任务都完成了,你一定会成为音视频人才招聘市场的香饽饽~~

下面是一些推荐的参考资料:

1. 《雷霄骅的专栏》:http://blog.csdn.net/leixiaohua1020

2. 《Android音频开发》:http://ticktick.blog.51cto.com/823160/d-15

3. 《FFMPEG Tips》:http://ticktick.blog.51cto.com/823160/d-17

4. 《Learn OpenGL 中文》:https://learnopengl-cn.readthedocs.io/zh/latest/

5. 《Android Graphic 架构》:https://source.android.com/devices/graphics/

关于音视频如何入门就介绍道这里了,有任何疑问欢迎来信 lujun.hust@gmail.com 交流,另外,欢迎关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。

Android 音视频开发入门指南相关推荐

  1. Android音视频开发入门指南

    <Android 音视频从入门到提高 -- 任务列表> 1. 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 Vi ...

  2. 23最新《Android音视频开发进阶指南》,音视频开发者速领

    作为Android开发程序员,我们时刻站在互联网的前端,而音视频作为现在乃至未来几年一个强劲的风口,吸引了许多程序员的关注. 那么音视频开发的行业现状究竟如何呢?我们又该怎样入门呢?请看下文: 音视频 ...

  3. android音视频开发进阶指南,音视频开发进阶指南:基于Android与iOS平台的实践

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  4. Android音视频开发入门(5)使用LAME编码一个PCM文件,为了跳槽强刷1000道Android真题

    无论是自行安装PC上的编译器,还是下载其他平台的交叉编译链,它们都会提供下面几个工具: CC 编译器,对C源文件进行编译处理,生成汇编文件 AS 将汇编文件生成目标文件 AR 打包器,用于库操作 LD ...

  5. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  6. Android音视频开发---0基础入门准备篇

    文章目录 0,题记 1,学习路线 2,学习目标 任务列表 基础知识 FFmpeg 3,开始音视频开发必备的技能 1,C语言. 2,Linux. 3,基本的Linux编译执行命令,以及vim操作. 4, ...

  7. 【安卓】音视频开发入门

    文章目录 音视频开发学习思路 关于开发的思考 音视频开发的内容 采集 渲染 处理 传输 音频基础知识 基础概念 采样率(samplerate) 量化精度(位宽) 声道数(channels) 音频帧(f ...

  8. 企业级Android音视频开发笔记分享,快来get正确的学习姿势

    随着传统的图文媒体向以音视频为主的新媒体转变,音视频开发逐渐成为Android领域内的小热门.但音视频开发涉及的层面较广,相关的技术繁多且复杂,想要深入确有一定难度.且目前网络上关于Android 音 ...

  9. 《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址

    年前买了这本书,想看下随书源码,一开始从CSDN下载频道下载电子书+源码,但那个源码不是这边书的. 从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下: 作 ...

最新文章

  1. Xcode消除编译器警告
  2. 模板文件默认标准版首页模板.html未找到!,html页模板
  3. Linux Shell 截取字符串
  4. 使用fprintf()函数格式化输出至磁盘文件和是stdout
  5. Django框架(20.Django的视图函数的request参数以及QueryDict对象)
  6. spring 项目集成配置_Spring重试–与项目集成的方式
  7. 『AA』AutoAnchor自动猫
  8. java----IO和NIO的区别
  9. 《金狐系统维护盘》六周年纪念版UD/ISO +PE维护
  10. Unity shader入门之数据类型
  11. win7装postgresql10.4
  12. 【FLink】Flink checkpoint 实现数据连续计算 恢复机制 拓扑图 变化 如何处理
  13. Java集合框架之三:HashMap源码解析
  14. 演示账号激活的过程:注册——向指定邮箱发送邮件——用户登录邮箱,激活账号
  15. 【气动学】基于matlab改进的遗传和粒子群算法高斯烟羽模型模拟气体扩散【含Matlab源码 1061期】
  16. 【转载】Vue 2.x 实战之后台管理系统开发(二)
  17. 如何解决数据流转「不可能三角」难题?
  18. linux的tomcat日志,linux下查看tomcat的日志
  19. React React-Redux Redux
  20. ppm调制matlab程序,求助:谁能帮我编写一个4ppm的解调程序 谢谢了

热门文章

  1. 避免在WHERE条件中,在索引列上进行计算或使用函数,因为这将导致索引不被使用...
  2. centos 7.1 yum
  3. Hibernate搭建成功!(源码)
  4. 铃木dl250参数_铃木DL250,铃木GSX250,铃木GW250重量多少?哪款最值得买?
  5. flutter设置文本最大宽度
  6. 基于ARP的网络扫描工具netdiscover常用命令集合大学霸IT达人
  7. Linux安全渗透教程——大学霸内部资料
  8. python写电商网站框架,python-django框架-电商项目-商品模块开发_20191124
  9. iOS移除父控件中所有子控件的两种方式
  10. java.lang.date_无法将java.lang.String类型的值转换为必需类型java.util.Date