目录
- 为什么要学习音视频?
- 如何学习系统性音视频?
- 音视频相关的资料
- 学习实践的输出文章分类聚合
- 收获
最近有朋友问想学习音视频,应该怎么学,有什么资料吗?
这个问题也困扰我很久,几年前就想开始音视频相关的学习,但是一直找不到门道,坚持不过两周。回看这个系列文章,到目前写了30+篇,虽还不敢说已入门,因为越学越发现 不会的知识、需要学的东西就越多。但为什么相比过去几年的几次尝试,这次持续时间更长、不断有文章输出呢?
这篇文章就和对自己进行检视反思,希望对想学习音视频的朋友也有所帮助。
为什么要学习音视频?
我是做android应用开发,android本身也是有很多需要深入学习的内容,越是底层的、基础的东西越是通用,比如说设计模式、数据结构、算法、通信机制、多线程机制、JVM虚拟机等等。把上面这些内容结合具体业务和场景学好应用好,对自己的提升也是十分有裨益。我的一个学习榜样就是在这方面有很深的认知和能力。
对于我个人而言,音视频的情怀,4-5年前已经埋下,当时做了一款直播点播的体育类app,接触到一些音视频相关的知识,当时还写过一篇有头无尾的文章[android音视频点/直播模块开发]: https://blog.csdn.net/u011570979/article/details/51205401,但是后面由于工作方向的外部原因,以及更重要的是自己认知不足,对音视频的学习和发展道路还没有比较强烈的渴望,就不了了之了。
在2020年国庆期间,重新检视了下自己的规划和年度目标,发现最重要的个人目标“音视频开发上道”,竟然还没有具体迈出第一步。和自己认真对话之后想清楚了两个问题
- 为什么要学习音视频
- 如何系统性的学习音视频
然后就开始了这一系列的学习实践,主要还是认知的提升、着眼长远、系统性的思维。
随着近些年以抖/快为代表的短视频、以B站为代表的长视频的快速发展,对16年左右比较火热的直播进行了一次变化,但是还是在音视频领域,我们来看下来在“Trustdata大数据”最新的数据
上述内容来源于 [Trustdata大数据] : https://mp.weixin.qq.com/s/otGI_yvvF_Q0L2mDrhtxyg
通过上面的Top20排行榜,我们可以清晰的看到直接和音视频相关的app有5个,更惊人的是这top20的app,几乎都有音视频相关的内容,这就是行业现状或者趋势吧。
现在音视频都已经那么火了,现在学还有机会吗?
右侧追击的理论同样适用于我们的学习实践。音视频行业快速发展的底层是信息通信的越来越高效,芯片设备的越来要强大和智能。随着5G、6G的应用,相信未来音视频不是什么发展方向,而是像水电一样的基础功能。也是基于这个认知的改变,让自己坚信了音视频这条发展的道路。
代码引用[FFmpeg 音视频开发 20 年]中的一段文字
下一个10年,技术还是那些技术,主角或许从移动App,变成了AI,边缘计算。如果不是xx战,今年海思的AI芯片,4T算力的可能会在下探到10个美金以下。芯片的大规模量产,价格下降,会带动行业新一轮变革。
软件开发者,也会有相应的全新的机会,音视频,网络通讯,OpenGL/ES 都是必须要掌握的,从事相关开发,加上OpenCV, Tensorflow-lite. 深度学习基础。 个人一点看法,仅供参考。
所以单纯聊 FFmpeg 已经没有什么意义,聊点音视频,数字图像处理,网络通讯,跟 FFmpeg 相关的,或许更有参考价值。FFmpeg 的未来在哪里? 一项技术只能在一个合适的时间段解决一个特定的问题。
编解码都被硬件做了还需要软件开发吗?
编解码无论硬解软解代码量都很少。几十行代码的事。在一个项目中占比很少。大量的代码在于网络通讯,图像处理,软件自身的逻辑等。
二、如何学习系统性音视频?
项目管理的很重要的一环就是任务的拆解,然后逐步的实现。之前是想走捷径,想一步就学成,哪有什么速成之术,特别对于知识系统很庞大的体系,分布拆解、逐步学习实践是非常重要的。
也是在2020年国庆期间,通过搜索资料结合自己的思考,逐步形成了如下5个阶段的学习
- 音视频 android基础
- OpenGL ES
- JNI&NDK系列
- FFmpeg、x264
- 开源项目(exoplayer、ijkplayer、gpuimage)
- 后续待定(暂未加入)… 比如openCV、 webRTC
这些非常重要,这些阶段是学习路上的关键节点,构成了认知地图,然后每个阶段,去找对应的资料再把任务拆解成子任务,通过输出倒逼输入,不断迭代自己的学习写作系统。
三、音视频相关的资料
3.1 图书类
《音视频开发进阶指南》
《FFmpeg从入门到精通》
《OpenGL ES应用开发实践指南》
《OpenGL ES 3.0编程指南》
《OpenGL编程指南》
《计算机图形学基础(OpenGL版)》
《漫画算法》
《编程珠玑》
《算法》
《Tinking in C++》
3.2 系统认知类
[FFmpeg 音视频开发 20 年] : https://blog.csdn.net/chenchao_shenzhen/article/details/111532282?spm=1000.2115.3001.4373
[ Android 音视频开发学习思路 ] : https://www.cnblogs.com/renhui/
[音视频开发学习路线-字节流动] : https://mp.weixin.qq.com/s/u1MktZdId94bqoI-3DWosA
[Android 音视频开发入门指南] : https://blog.51cto.com/ticktick/1956269
[从开发小白到音视频专家] : https://blog.51cto.com/ticktick/2046899
[《ywl5320的专栏》]:https://blog.csdn.net/ywl5320
3.3 在线视频资料
[音视频开发工作经验分享] : https://www.bilibili.com/video/BV1p54y1X7fY
[计算机图形学OPENGL入门] : https://www.bilibili.com/video/BV1px41197A5
[尚硅谷Java数据结构与java算法(Java数据结构与算法)] : https://www.bilibili.com/video/BV1E4411H73v
[【C语言描述】《数据结构和算法》(小甲鱼)] : https://www.bilibili.com/video/BV1jW411K7yg
[黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难] : https://www.bilibili.com/video/BV1et411b73Z
[Android设计进阶篇-实战NDK(中)] : https://www.bilibili.com/video/BV1Za4y1J7fQ
[基于FFmpeg+SDL的视频播放器的制作——雷霄骅] : https://www.bilibili.com/video/BV14x411D7FD
四、写文章分类聚合
对自己已写的文章进行聚类,也放在[github]: https://github.com/ayyb1988/mediajourney上,方便后续更新,
阶段一:andorid多媒体
音视频开发之旅(五)MediaExtractor MediaMuxer 实现视频的解封装与合成
阶段二: OpenGL ES
音视频开发之旅(十) GLSurfaceView源码解析&EGL环境
音视频开发之旅(11) OpenGL ES矩阵变换与坐标系统
音视频开发之旅(15) OpenGL ES粒子系统 - 喷泉
音视频开发之旅(16) OpenGL ES粒子效果-烟花爆炸
阶段三: JNI&NDK
音视频开发之旅(18) JNI - 引用类型、异常处理、函数注册
音视频开发之旅(19)NDK构建方式 ndk-build与cmake
子系列 算法
音视频开发之旅(26) 算法系列-选择、插入排序以及STL中sort的实现
阶段四 : FFmpeg
后续系列文章持续输出中,欢迎关注公众号“音视频开发之旅”,一起学习成长。
五、收获
通过互动,得知朋友的困扰,也帮忙自己检视和梳理自己
- 重新检视了为什么要学习音视频
- 学习音视频的方法、资料
- 学习实践的文章分类聚合梳理
感谢你的阅读
下一篇我们学习实践ffmpeg系列,欢迎关注公众号“音视频开发之旅”,一起学习成长。
欢迎交流
网友评论