原文地址(不定期更新):https://github.com/xhunmon/VABlog

一、前言

正所谓源于开源,回馈开源!以下是学习音视频路线推荐。丰富的音视频资料往最后翻。

二、学习技能

技能 重要度 作用 学习建议
c/c++ ★★★★☆ 音视频开源库基本都是用c/c++写的,如:FFmpeg库用C语言写的,Webrtc底层是用c++写的。 1. 看动脑或网易c/c++视频;2. 看书:c++ primer 第5版;3. 看FFmpeg源码;4. 最重要自己动手敲。
cmake ★★★☆☆ 跨平台引导编译的重要语言。在CMakeList.txt文件体现。 1. 看动脑CMake中视频;2. CMake 入门实战
shell ★★☆☆☆ 很多开源库都是通过shell脚本进行编译的。如ffmpeg和x264中configure。 Shell脚本
Android NDK ★★☆☆☆ 在android平台上使用,需要掌握NDK的一些知识。如:交叉编译,JNI的接入。 看动脑NDK中JNI和交叉编译视频;
IOS ★★☆☆☆ (略) (略)

三、学习音视频理论知识

  • 书:音视频开发进阶指南:基于Android与iOS平台的实践(京东) :第1章 音视频基础概念;电子书往最后翻。
  • 书:Android 音视频开发_何俊林(京东) :第1章 音视频基础知识;电子书往最后翻。
  • 也可以在这里1 或者这里2 搜索。

四、学习音视频基本原理

1)视音频数据处理入门

[总结]视音频编解码技术零基础学习方法 系列文章,介绍了视音频编解码技术大体上原理和流程,通俗易懂。包括以下文章:

  • 视音频数据处理入门:RGB、YUV像素数据处理 :视频就是由它们组成的。
  • 视音频数据处理入门:PCM音频采样数据处理 :音频就是由它们组成的。
  • 视音频数据处理入门:H.264视频码流解析 :视频编码技术的一种(现代音视频开发必须掌握)。
  • 视音频数据处理入门:AAC音频码流解析 :音频编码技术的一种(现代音视频开发必须掌握)。
  • 视音频数据处理入门:FLV封装格式解析 :音视频封装格式的一种。具体一点看:手撕FLV协议 。
  • 视音频数据处理入门:UDP-RTP协议解析 :音视频协议的一种。

2)完整RTMP推送小项目

这个项目简单介绍音视频相关知识,以及实现的原理,总共分五章:

  • 第一章:直播推流全过程:视频数据源之YUV(1)
  • 第二章:直播推流全过程:音频数据源之PCM(2)
  • 第三章:直播推流全过程:视频编码之H.264(3)
  • 第四章:直播推流全过程:音频编码之AAC(4)
  • 第五章:直播推流全过程:直播推流编码之RTMP(5)
  • 福利:博主买了个一年的服务器搭建了rtmp接收服务端,地址在项目里面,大家可以拿来测试。

五、学习FFmpeg

音视频开发是绕不开FFmpeg的,因为它是一个"集大成者",里面已经包含或可集成现代几乎所有的音视频技术(库)。

1)学习途径

  • 阅读官方文档
  • 学习官方例子(源码中doc/examples/xxx
  • [总结]FFMPEG视音频编解码零基础学习方法
  • 书籍(电子书往最后翻)
  • 1.FFmpeg从入门到精通(京东)
  • 2.FFMPEG_FFPLAY源码剖析(CSDN)
  • 3.音视频开发进阶指南:基于Android与iOS平台的实践(京东)
  • 4.Android 音视频开发_何俊林(京东)

2)学习路线

这里不推荐直接学习雷神的[总结]FFMPEG视音频编解码零基础学习方法,建议是通过在学习FFmpeg官方例子中进行学习,避免先入为主使用了过时的API。

a) 源码编译

编译ffmpeg4.2.2通过这篇文章我们基本可以编译出我们想要的FFmpeg库

b) 源码阅读

  • 源码导入:FFmpeg导入到Clion(MacOS) 、 使用Clion阅读FFmpeg源码(支持跳转)
  • 阅读参考:FFMPEG/FFPLAY源码剖析(CSDN下载) ,我也放到最下方资料里面了,没条件的朋友们可以从这里下载。

c) 学习官方例子

  • FFmpeg重要结构体(转自雷神) ,因为在学习FFmpeg中,必须得知道结构体中重要参数的含义,否则举步维艰。
  • FFmpeg Demuxing(解封装) 对应 doc/examples/demuxing_decoding.c 中的解封装部分。
  • FFmpeg Muxing(封装) 对应 doc/examples/muxing.c
  • FFmpeg Remuxing(重新封装) 对应 doc/examples/remuxing.c
  • FFmpeg Decode(解码) 对应 doc/examples/decode_audio.cdoc/examples/decode_video.c
  • FFmpeg Encode(编码) 对应 doc/examples/decode_audio.cdoc/examples/decode_video.c
  • FFmpeg 简单实现转码 汇总解封装、解码、编码、封装放到一起方便理解 。
  • FFmpeg Filter和SDL(Video) 对应 doc/examples/filtering_video.c
  • FFmpeg Filter和SDL(Audio) 对应 doc/examples/filtering_video.c
  • FFmpeg Transcode(转码) 对应 doc/examples/transcoding.c

六、待更…

音视频资料

作者有话说

若有帮助就Star一下呗,您的鼓励是我开源的动力!

此外:欢迎光临我的博客 && 这个导航网页内容也很丰富哦


本文一切皆从网络而来,如有侵权请联系我(邮箱:xhunmon@126.com)进行处理。

0基础学习音视频路线,以及重磅音视频资料下载相关推荐

  1. 【新知实验室】0基础小白如何免费打造自己的音视频小程序

    目录 一.前言 二.小程序功能介绍 三.在腾讯云获取源码和接口 四.制作你的微信小程序 五.总结与建议 六.相关链接 开发环境:微信开发者工具(1.06.2211222 64位) 测试环境:红米Not ...

  2. 2023 Data数据分析岗前景如何?0基础学习数据分析成功上岸,3个月掌握令人惊叹的sql能力!...

    Date数据分析师的发展路线! 从事数据分析相关工作,按职业发展方向大致分为两类. [1]业务路线:业务分析--数据分析师--部门leader--管理高层 一般在大中型企业为业务持续增长带来价值,比如 ...

  3. 全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍

    全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍 大家好,欢迎观看蛙色VR官方--后台使用系列课程! 一.热点功能概览 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生 ...

  4. 视频教程-ZStack 带你0基础搭建私有云平台|ZCCT实战培训视频|-云平台

    ZStack 带你0基础搭建私有云平台|ZCCT实战培训视频| ZStack云计算解决方案专家,12年虚拟化与云计算相关工作经验,先后就职于IT系统集成商.国内知名软件上市公司以及云计算服务商,分别从 ...

  5. 日语课程0基础学习笔记——第一课

    学习目标: 编程0基础学习笔记--前言 这是一个个人使用的日语学习记录博客!根据B站的up日语教程一直跟下来,从第一天开始记录.后续会把我学习的内容和知识点尽量多的记录在这个博客中,不仅是方便自己复习 ...

  6. 0基础学习数据分析必须掌握的技能有哪些?

    现如今,我们处于一个互联网发展的时代,大大小小的企业对于数据分析相关岗位的需求逐渐增加,因为所有的企业都有数据,企业需要让数据分析师通过整理.分析企业数据总结出企业目前的发展现状,并且为企业做出下一步 ...

  7. python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...

    从0基础学习Python (Day19) 面向对象开发过程中的=>异常 什么是异常 ​ 当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的 ...

  8. 从0基础学习Python(13)[面向对象思想]

    从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 ​ 目前软件开发技术中两种主流思想:面向过程.面向对象 ​ 面向过程思想出现较早,C语言 ​ 面向对象思想 ...

  9. 卷毛0基础学习Golang-基础-slice切片

    卷毛0基础学习Golang-基础-slice切片 持续更新中---- 切片简述 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数据结构无法完全满足开发者的真实需求. ...

  10. 卷毛0基础学习Golang-并发编程,01 什么是并发

    卷毛0基础学习Golang-并发编程,什么是并发 Go并发编程 概述 简而言之,所谓并发编程是指在一台处理器上"同时"处理多个任务. 随着硬件的发展,并发程序变得越来越重要.Web ...

最新文章

  1. 地图构建两篇顶级论文解析
  2. 未处理的异常: 0xC0000235: 由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭。...
  3. 【机器学习】一文归纳AI数据增强之法
  4. MFC界面库BCGControlBar v25.3新版亮点:Dialogs和Forms
  5. 面试官:你不懂六大设计原则,回去等通知吧!
  6. 理论基础 —— 栈 —— 顺序栈
  7. NSThread详解
  8. 通过生日查询各年龄段数量通过饼状图显示
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的健身房管理系统
  10. 老李分享:《Linux Shell脚本攻略》 要点(二)
  11. SCRT同网段的ping不通
  12. <论文阅读> DI-FODO — 3D距离传感器的快速视觉里程计
  13. R语言用igraph绘制网络图可视化
  14. 统计3个班成绩情况,每个班有5名同学 求出各个班的平均分和所有班级的平均分(学生成绩键盘输入) 同级生哪个班及格人数,每个班5名同学
  15. 程序错误类型及其处理
  16. springboot毕设项目公共场所安保信息管理系统v2rtn(java+VUE+Mybatis+Maven+Mysql)
  17. java sm3国密算法加密、验证工具类
  18. [Unity workflows] Unity 5.6.1f1 与 Docker 和 Bitrise 的持续集成
  19. stm32F429HAL库使用DS18B20输出温度到电脑串口助手
  20. AcrelCloud-1000变电所运维云平台在浙江固特成套设备有限公司的应用

热门文章

  1. 系统安全性分析与设计
  2. 犹太人和你想的不一样
  3. 鬼使神差的给宝宝办了大米的卡
  4. 缅怀过往_飘云羽逸_新浪博客
  5. 【游戏】python小游戏制作教程
  6. LCD液晶屏的通讯模式
  7. Kubernetes K8S之affinity亲和性与反亲和性详解与示例
  8. 装了冰点还原如何修改计算机ip,冰点还原软件如何使用
  9. Hive on spark执行子查询报错code3
  10. 联盟链步入黄金时代 |链捕手