Android音视频开发入门(一)

前言

最近公司有需求要做一个视频编辑的功能,陆陆续续查了很多资料,因为之前没有接触过这一领域,开始是想用Android自带的API来实现,但是过了一个星期后,通过参考别人的范例写了一个视频裁剪的demo,各种问题,这一周基本就用来查找怎么去解决这些问题了,但是结果很现实,仍然不知道怎么去解决这些问题。突然发现如果还是这样继续下去的话,就算功能勉强实现了,当出现另一个问题后还是不知道怎么去快速解决。也意识到如果只用Android API 的话可能无法实现需求。查找入门资料的时候偶然发现了一篇文章《Android音视频开发入门指南》,发现需要学习的地方还有很多…很多…很多…多…,就打算把音视频作为2019年的一个任务目标来学习,希望能通过这个指南一步步的进阶。

任务目标

为了防止链接失效,把任务目标转移到这儿一份

  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/

结语

这一篇记录是学习音视频的开始,希望能督促自己不断的去进步,从下一篇文章开始记录学习音视频的每一步。不积跬步无以至千里,小步伐走起来。

你可能感兴趣的:(Android音视频入门)