视频、声音、图片是我们日常生活中最常见的三种数据载体,音视频主要处理的也是这三种数据。音视频完整的技术栈是关注这些数据从产生到消费的完整流程,从视觉上、听觉上、感觉上给大家最好的体验。
- 视频、声音、图片是如何产生的?或者说如何采集的?如何保证视频的清晰度高?如何保证声音的质量好?
- 怎么保证网络传输视频、音频数据快?弱网情况下如何保证?
- 怎么以最好的体验渲染视频、声音?2D渲染、3D渲染?多声道、混音?
- 怎么解析视频、图片、声音呢?
其实上面的这些问题就是当前音视频技术中值得深挖的点?四种突破的方向,每个方向都值得去深挖,如果能在某个方向搞定这些技术点,未来发展可期。
生产侧我们关心的点是三方面:
- 如何提升视频的画质:HEVC编码、AV1编码、色彩调节、部分超分算法
- 如何减少导出视频的时间:并行编码、码率优化
- 如何将视频处理得平滑:光流法插帧
视频播放器是最场景的渲染侧的应用了,虽然播放器比较简单,但是渲染侧包含的内容非常多,以后渲染的重要性也会进一步提高。因为渲染的数据越来越复杂,从2D到3D,到AR画面等等,要求逼真、栩栩如生,就要求我们使用一些高级的渲染引擎,例如filament、Unity等等。渲染侧也有三方面需要重点关注:
- 提升渲染效率
- 降低资源占用
- 提升兼容性
分析侧和算法绑定的比较多一点,有些人可能会将它们归类到算法中,但是它们和音视频的业务结合的比较紧密,例如分析视频中的具体帧:鉴黄、插广告等等,以后音视频的应用必将是智能化的应用,所以很多的优化都和算法紧密相连,例如既可以和生产侧也可以和渲染侧结合的——视频超分,生产侧的超分会做得细致一点,渲染侧的超分就不能从整体视频的角度考虑,只能考虑视频的一部分,OpenCV中提供了很多视频和图片处理的方法,其实并不需要非常高深的算法功底,就可以做出令人惊艳的效果。
传输侧一直以来都非常火,因为音视频的本质是为了交流,你生产的音视频就是信息的载体,信息就是要被分享和处理的,所以传输是重要的一环,虽然现在的网络建设越来越好了,但是还是有很多弱网状态需要处理,RTC中需要解决的核心场景有:
- 视频超分算法
- RTC弱网对抗
- RTC质量检测
- AI智能降噪
- 音视频通话
相关学习资源:
Android 音视频开发这块目前没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联积累起来。
不少人在音视频初级入门过程中只是接触Android多媒体展示相关的API,通过单独的列举和使用这些API,只能让你对Android音视频处理有一个基本的轮廓,知识点都是零散的,根本没有有效的途径将所有知识点串联起来。
这样对于音视频的了解和控制就仅仅局限于最外层的API了,在深入学习之前,往往这些API就已经把脑袋都弄大了,而且,仅仅停留在使用API的层次,不能让你适应不断变化的需求。
如果最开始的方向都错了,那么不管你如何努力,都学不好音视频!
而如果是跟着正确的学习路线一步步深挖,那么一切都不是问题!
这里给大家推荐《音视频开发核心知识点笔记》,有需要的朋友们可以直接前往公号中:Android开发之家自行访问查阅。
音视频初级入门
- Android 音视频开发(一):通过三种方式绘制图片
- Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
- Android 音视频开发(三):使用 AudioTrack 播放PCM音频
- Android 音视频开发(四):使用 Camera API 采集视频数据
- Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
- Android 音视频开发(六):MediaCodec API 详解
- Android 音视频开发(七):音视频录制流程总结
- ……
音视频中级进阶:OpenSL 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 响应触摸事件
- Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
- Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
- Android OpenGL ES 开发(十): 通过GLES20与着色器交互
- ……
如果需要这份《音视频开发核心知识点笔记》,可以前往公号中:Android开发之家自行访问查阅。
音视频高级探究
音视频编解码技术
- 音视频编解码技术(一):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中重要结构体之间的关系
- ……
- FFmpeg 开发之 AVFilter 使用流程总结
- FFmpeg 过时 Api 汇总整理
- ……
如果需要这份《音视频开发核心知识点笔记》,可以前往公号中:Android开发之家自行访问查阅。
网友评论