一个专注音视频领域问答的小圈子

避免图片丢失,建议阅读微信原文:

https://mp.weixin.qq.com/s/Bb0fgFMgH5QOBqYhOj0uqA

直播 中有提到几个不错的开源项目,这里再重点推荐一下:

目前,市面上关于音视频学习的相关书籍并不多,而且即使看了书籍学了理论,最终还是要回归到代码上来。

毕竟 IT 行业实践性要求高,强调动手能力,音视频这方面就更得多操作和探索了。

推荐下面几个项目会各有侧重,分别涵盖了 Android 音视频录制 API 、OpenGL 渲染和综合运用的例子。

  • GPUImage

Github 地址:

https://github.com/cats-oss/android-gpuimage

GPUImage 毫无疑问是音视频项目里面必读工程了,它的侧重点在于渲染方面。

有些公司的招聘要求上可能都会写明熟悉GPUImage ,重要性可见一斑。

通过阅读 GPUImage 的源码,能够让你掌握 OpenGL 的渲染以及渲染链的搭建,同时工程里面很多特效 Shader 代码,通过阅读和实践这些 Shader 代码,能够让你掌握初步的 Shader 编写能力。

比如常见的滤镜效果,在 GPUImage 就有现成的代码例子,这一点在我的直播中也有讲到。有兴趣的可以翻阅视频,掌握常见滤镜效果的代码编写。

如果需要 GPUImage 相关的源码分析文档,也可以参考我之前写过的一篇文章:

OpenGL 之 GPUImage 源码分析

  • AudioVideoRecordingSample

Github 地址

https://github.com/saki4510t/AudioVideoRecordingSample

此项目的侧重点在于 Android 音视频相关 API 的使用,尤其是在 录制和编码方面的。

该项目运行后能够将 Camera 采集的视频和音频内容编码成一个 MP4 文件。

这其中用到了 MediaCodec 做编码,用到了 MediaMuxer 将音频和视频混合。

这样的一个完整示例对于掌握 Android 上音视频相关 API 帮忙非常大,因为它能够成功正确运行,而且可以通过去修改其源码来做自己的实验,验证自己对于 API 的理解和掌握。

当你能够熟练掌握其内容,或者你就可以试着更进一步,尝试用 FFmpeg 做音视频的编码和混合,实现和 Android 音视频 API 一样的功能。

  • Grafika

Github 地址

https://github.com/google/grafika

此项目是 Google 提供的一个非官方的项目,它的侧重点在于将 OpenGL 与 Android 音视频 API 综合运用。

它包含了很多个完整小示例,比如如何使用 TextureView 显示 OpenGL 内容、使用三种方式进行 OpenGL 内容的录制、如何进行硬编码操作等。

通过阅读这些例子,能够让你掌握更多的技巧,把前面学会的 OpenGL 和 Android 音视频 API 更灵活运用了,进一步加深理解。

甚至有些例子都可以用到项目早期需求中去的,比如如何进行 EGL 的封装、渲染线程与主线程的分离。

另外,以上三个例子都会包含 Camera 相关的操作,比如如何将 Camera 内容展示到 SurfaceView 、TextureView 上,如何进行 Camera 拍摄等。

最后

之前这三个项目堪称教科学书级别的,不是没有理由的。至少我都源码阅读了两边以上。

第一次阅读的时候会觉得 " 嗯,明白怎么回事了 “,等到项目实践了,需要自己从头搞一遍,这时再回头看,会有新的感悟 “哦,原来要这样设计呀” ,等到更熟练的时候,在来看,可能就会觉得 “咦,这块能优化一波了”。

以上,希望对于想从事音视频开发的你,也能够看看上面几个项目源码,学习到更多技巧,共同进步。

知识星球

一个专注音视频领域问答的小圈子

公众号音视频开发进阶对应的知识星球,一个编程开发领域的专业圈子,贩卖知识和技巧!

※ 入群须知:了解该星球能提供的价值和帮助,在提问时务必阐述好背景,附带相关的信息。

iOS 用户可以加我微信 ezglumes 邀请你进星球,有疑问也可以加我微信咨询。

※ 星球内容:

基础教程:

在知识星球连载的干货教程,可以在专栏中找到,随着时间的推移,教程也会越来越多:

- 音视频基础概念
- WebRTC 入门教程及源码实践
- 播放器教程及源码实践
- OpenGL 和特效开发教程
- Vulkan 入门教程

部分内容可以在博客 https://glumes.com 中检索到,后面会在星球里持续更新.

干货分享:

涵盖了移动开发和音视频工程领域的绝大部分,从项目实战角度出发,提升能力,包括但不限于以下领域:

- Android/iOS 移动开发
- Camera 开发
- 短视频编辑 SDK 项目实践
- 在线直播和推流
- WebRTC 开发
- 播放器基础和提高
- OpenGL 图像渲染及特效开发
- C++ 基础和提高
- FFmpeg 使用和分析
- 干货资源和书籍分享

不止于技术方面的,各种 IT 新闻、茶余饭后、生活趣事也欢迎大家分享!!!

技术答疑解惑:

针对上述基础教程和干货分享的答疑,另外还有音视频和 IT 开发中的各种交流讨论。

- 基础知识点答疑
- 工业项目实践答疑
- 问题排查思路分析

一个 BUG 排查很久,不如来星球里提个问题,效率提升百倍。

求职和面试辅导:

一站式职场服务,每份工作都值得用心对待!!!

- 面试题和面试经验分享
- 简历修改和模拟面试
- 大厂内推和信息同步
- 职场经验分享
- 职业规划和发展分析

※ 星主和合伙人介绍

星主是公众号音视频开发进阶的作者,也是网站 https://glumes.com 的作者,曾参与过抖音、剪映等头部音视频 APP 底层 SDK 的开发。

合伙人也是在头条、快手从事音视频架构师的职位,具有多年的音视频开发经验,能力圈覆盖了音视频的绝大多数领域,资深音视频从业人员为你保驾护航。

微信公众号

扫描下面的二维码关注我的微信公众号《音视频开发进阶》,推送更多精彩内容!

添加我的微信 ezglumes 拉你入音视频与图形图像技术群一起交流学习~

wechat-account-qrcode

原创文章,转载请注明来源:    推荐几个堪称教科书级别的 Android 音视频入门项目