进阶必备:音视频该如何学习?
我们先来看看一个方向性的学习指南:
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 特效等功能
一,初级入门篇:
创建一个AudioRecord对象 初始化一个buffer 开始录音 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。 关闭数据流 停止录音
MODE_STATIC模式 MODE_STREAM模式
音频流的类型 Buffer分配和Frame的概念 AudioTrack构造过程
区别 联系 SoundPool
流控基本概念 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音视频开发,扫码下方二维码即可领取~