Android开发经验谈Android开发音视频

音视频开发之旅(32)-音视频学习资料

2021-02-08  本文已影响0人  yabin小站

目录

  1. 为什么要学习音视频?
  2. 如何学习系统性音视频?
  3. 音视频相关的资料
  4. 学习实践的输出文章分类聚合
  5. 收获

最近有朋友问想学习音视频,应该怎么学,有什么资料吗?

这个问题也困扰我很久,几年前就想开始音视频相关的学习,但是一直找不到门道,坚持不过两周。回看这个系列文章,到目前写了30+篇,虽还不敢说已入门,因为越学越发现 不会的知识、需要学的东西就越多。但为什么相比过去几年的几次尝试,这次持续时间更长、不断有文章输出呢?
这篇文章就和对自己进行检视反思,希望对想学习音视频的朋友也有所帮助。

为什么要学习音视频?

我是做android应用开发,android本身也是有很多需要深入学习的内容,越是底层的、基础的东西越是通用,比如说设计模式、数据结构、算法、通信机制、多线程机制、JVM虚拟机等等。把上面这些内容结合具体业务和场景学好应用好,对自己的提升也是十分有裨益。我的一个学习榜样就是在这方面有很深的认知和能力。

对于我个人而言,音视频的情怀,4-5年前已经埋下,当时做了一款直播点播的体育类app,接触到一些音视频相关的知识,当时还写过一篇有头无尾的文章[android音视频点/直播模块开发]: https://blog.csdn.net/u011570979/article/details/51205401,但是后面由于工作方向的外部原因,以及更重要的是自己认知不足,对音视频的学习和发展道路还没有比较强烈的渴望,就不了了之了。

在2020年国庆期间,重新检视了下自己的规划和年度目标,发现最重要的个人目标“音视频开发上道”,竟然还没有具体迈出第一步。和自己认真对话之后想清楚了两个问题

  1. 为什么要学习音视频
  2. 如何系统性的学习音视频
    然后就开始了这一系列的学习实践,主要还是认知的提升、着眼长远、系统性的思维

随着近些年以抖/快为代表的短视频、以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个阶段的学习

  1. 音视频 android基础
  2. OpenGL ES
  3. JNI&NDK系列
  4. FFmpeg、x264
  5. 开源项目(exoplayer、ijkplayer、gpuimage)
  6. 后续待定(暂未加入)… 比如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多媒体

音视频开发之旅(一)三种方式绘制图片

音视频开发之旅(二)AudioRecord录制PCM音频

音视频开发之旅(三)AudioTrack播放PCM音频

音视频开发之旅(四)Camera视频采集

音视频开发之旅(五)MediaExtractor MediaMuxer 实现视频的解封装与合成

音视频开发之旅(六)MediaCodec硬编解流程与实践

阶段二: OpenGL ES

音视频开发之旅(七) OpenGL ES 基本概念

音视频开发之旅(八)GLSL及Shader的渲染流程

音视频开发之旅(九) OpenGL ES 绘制平面图形

音视频开发之旅(十) GLSurfaceView源码解析&EGL环境

音视频开发之旅(11) OpenGL ES矩阵变换与坐标系统

音视频开发之旅(12) OpenGL ES之纹理

音视频开发之旅(13) OpenGL ES 滤镜 (篇一)

音视频开发之旅(14) OpenGL ES 实时滤镜

音视频开发之旅(15) OpenGL ES粒子系统 - 喷泉

音视频开发之旅(16) OpenGL ES粒子效果-烟花爆炸

阶段三: JNI&NDK

音视频开发之旅(17) JNI与NDK的学习和使用

音视频开发之旅(18) JNI - 引用类型、异常处理、函数注册

音视频开发之旅(19)NDK构建方式 ndk-build与cmake

音视频开发之旅(20) 指针、内存模型、引用

音视频开发之旅(21)运算符重载、继承、多态、模版

音视频开发之旅(22) STL 之 容器

子系列 算法

音视频开发之旅(23) 算法系列 - 冒泡排序

音视频开发之旅(24) 算法系列-快速排序

音视频开发之旅(25) 算法系列-堆排序

音视频开发之旅(26) 算法系列-选择、插入排序以及STL中sort的实现

音视频开发之旅(27) 算法序列 - 二叉查找树

音视频开发之旅(28) 算法序列 - 平衡二叉树

音视频开发之旅(29) 算法序列 - 散列表

阶段四 : FFmpeg

音视频开发之旅(30) -音视频基础知识

音视频开发之旅(31) -FFMPEG常用命令

后续系列文章持续输出中,欢迎关注公众号“音视频开发之旅”,一起学习成长。

五、收获

通过互动,得知朋友的困扰,也帮忙自己检视和梳理自己

  1. 重新检视了为什么要学习音视频
  2. 学习音视频的方法、资料
  3. 学习实践的文章分类聚合梳理

感谢你的阅读

下一篇我们学习实践ffmpeg系列,欢迎关注公众号“音视频开发之旅”,一起学习成长。

欢迎交流

上一篇下一篇

猜你喜欢

热点阅读