当前位置: 首页 > news >正文

Android 音视频开发入门指南

带着 “任务” 去学习和实践,效率会高很多,因此我列出了一系列音视频相关的 “开发任务”,从简单到困难(当然,不一定非常严格和完美,部分任务先后可调整),大家在完成任务的过程中,遇到任何不懂的地方都要及时去 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/
参考:
https://zhuanlan.zhihu.com/p/28518637

相关文章:

  • 8.html表格相关的标记9.html表格实战《简单的网页布局》
  • 如何添加mysql到环境变量
  • 24、C#:按钮的属性和事件
  • c++ 软件下载 Dev cpp下载
  • 字符流、字节流、二进制及其在HTTP协议传输
  • Rxjs基础--Subject
  • Uber 机器学习平台 — 米开朗基罗
  • 使用forever让node.js持久运行
  • 系统安装
  • 如何开发webpack loader
  • 数据收集利器 cAdvisor - 每天5分钟玩转 Docker 容器技术(82)
  • Linux中禁用THP(Transparent Huge Pages)
  • Oracle无法收集AWR报错ORA-13516
  • Oracle11g的服务
  • ADO.NET
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • IP路由与转发
  • JDK 6和JDK 7中的substring()方法
  • Koa2 之文件上传下载
  • Magento 1.x 中文订单打印乱码
  • mongo索引构建
  • MQ框架的比较
  • Puppeteer:浏览器控制器
  • Python利用正则抓取网页内容保存到本地
  • vue 配置sass、scss全局变量
  • Vue2.0 实现互斥
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 电商搜索引擎的架构设计和性能优化
  • 如何在 Tornado 中实现 Middleware
  • 深入浅出webpack学习(1)--核心概念
  • 在weex里面使用chart图表
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 正则表达式-基础知识Review
  • ​力扣解法汇总946-验证栈序列
  • ​如何防止网络攻击?
  • !!java web学习笔记(一到五)
  • #Linux(Source Insight安装及工程建立)
  • (2)Java 简介
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (蓝桥杯每日一题)love
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .CSS-hover 的解释
  • .htaccess 强制https 单独排除某个目录
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 8.0 中有哪些新的变化?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net 代码性能 - (1)
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [Android学习笔记]ScrollView的使用
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素