音视频流媒体开发是一个涉及多种技术和知识领域的实践领域。以下是一份指南,帮助你系统学习流媒体开发:

  1. 理解基础概念
    习关于音视频数据的基础知识,包括常见的音频与视频格式、编解码器(codec)、容器格式等。
    了解流媒体的基本工作原理,包括直播和点播的区别,以及如何通过互联网传输音视频流。

  2. 掌握关键技术
    网络技术:了解TCP/IP、UDP、HTTP、RTMP、HLS、DASH等网络协议的工作机制。
    编解码技术:熟悉H.264/AVC、H.265/HEVC、Opus、AAC等流行的音视频编解码技术。

  3. 深入FFmpeg
    学习FFmpeg的使用,这是一个强大的工具集合,用于处理视频和音频数据。
    通过FFmpeg进一步深入了解音视频转码、封装和流化过程。

  4. 编程技能提升
    C/C++:深入C/C++编程知识,因为许多流媒体开发项目,包括FFmpeg,是用C/C++编写的。
    网络编程:掌握套接字编程,学习使用网络库(如Boost.Asio)进行高效的网络通信。
    多线程和并发:学习如何在多核心处理器上高效地处理多个音视频流。

  5. 实际项目经验
    参与开源项目:同FFmpeg等开源项目贡献代码,了解流媒体服务器的开发。
    实践构建自己的流媒体服务器,学习如何处理客户端连接、流同步和内容分发。

  6. 学习相关框架和库
    掌握如Live555、GStreamer、webrtc等流媒体相关的框架和库。

遵循上述指南,结合实际代码练习和项目开发,逐步建立起自己的音视频流媒体开发能力。

学习书籍推荐

音视频开发作为一个专业性较强的领域,入门时选择合适的书籍至关重要。以下是一些建议的入门书籍,它们可以帮助你建立音视频开发的基础知识框架:

  1. 《数字音频处理》
    该书籍被视为数字音频处理领域的经典入门书籍,虽然不是特别侧重编码方面,但提供了深入浅出的数字音频基础知识,适合初学者。

  2. 《数字图像处理》
    与音频处理相似,图像处理也是音视频领域的基础。这本书内容全面,是处理数字图像的入门教科书。

  3. 《FFmpeg从入门到精通》
    FFmpeg是处理音视频的重要工具,学习如何使用FFmpeg对音视频数据进行编解码、转码、封装等操作是入门音视频开发不可或缺的环节。

  4. 《音视频开发进阶指南:基于Android与iOS平台的实践》
    如果你的目标方向是在移动平台进行音视频开发,这本书提供了囊括Android和iOS平台的音视频开发技术与案例,适合初学者系统学习。

  5. 《音频信号处理与编码》
    这本书较为全面地涵盖了音频处理的基础知识,并介绍了音频信号的压缩编码技术和标准。

  6. 《视频编解码技术入门》
    针对视频编码技术进行了深入浅出的讲解,适合编解码技术的初学者。

  7. 《WebRTC权威指南》
    适合想要了解实时通讯技术的开发者,虽然不是纯粹的音视频处理内容,了解WebRTC可以帮助您理解音视频在网络传输过程中的处理方式。

音视频流媒体服务端开发系统性学习路线

1. 音频基础知识

  • 音视频录制原理
  • 音视频播放原理
  • 图像表示RGB-YUV.mp4
  • 视频主要概念
  • 音频基础知识-物理音频和数字音频
  • 音频基础知识-音频常见名词
  • 音频基础知识-音频编码原理简介
  • 封装格式+音视频同步

2. 开发环境搭建

  • MAC-安装FFmpeg
  • MAC-安装QT和调试
  • MAC-安装xcode和调试
  • Ubuntu_1-FFmpeg编译
  • Ubuntu_2-QT环境安装
  • Ubuntu_3-QT使用FFmpeg
  • Win10_1. FFmpeg命令行环境搭建
  • Win10_2-3 VS2015+QT5.10
  • Win10_4-ffmpeg编译
  • Win10_5-vs2015调用FFmpeg

3. FFmpeg命令实战-高屋建瓴

  • ffmpeg命令入门课程简介
  • windows ffmpeg命令行环境搭建
  • FFMPEG如何查询命令帮助文档
  • ffmpeg音视频处理流程
  • ffmpeg命令分类查询
  • ffplay播放控制
  • ffplay命令选项

4. FFmpeg命令实战-高屋建瓴

  • ffplay命令播放媒体
  • ffplay简单过滤器
  • ffmpeg命令参数说明
  • ffmpeg命令提取音视频数据
  • ffmpeg命令提取像素格式和PCM数据
  • ffmpeg命令转封装
  • fmpeg命令裁剪和合并视频
  • fmpeg命令图片与视频互转

5. FFmpeg命令实战-高屋建瓴

  • ffmpeg命令视频录制
  • ffmpeg命令直播
  • ffmpeg过滤器-裁剪
  • ffmpeg过滤器-文字水印
  • ffmpeg过滤器-图片水印
  • ffmpeg过滤器-画中画
  • ffmpeg过滤器-多宫格

6. SDL音视频渲染实战

  • SDL-01-Windows平台开发
  • SDL-02-Window显示
  • SDL-03-Event事件
  • SDL-04-Thread
  • SDL-05-PCM
  • SDL-06-YUV

7. FFmpeg基础-全面了解

  • FFmpeg-Basic
  • FFmpeg内存模型
  • FFmpeg内存实战

8. FFmpeg解封装+解码实战-略有小成

  • 音视频解封装流程分析
  • AAC_ADTS分析
  • H264_NALU分析
  • FLV格式分析
  • FLV解复用实战
  • 音频解码实战
  • 视频解码实战
  • MP4封装格式剖析
  • MP4解封装
  • AVIO内存输入模式

9. FFmpeg编码+封装实战-心领神会

  • 音频处理基本概念及音频重采样
  • 音频处理基本概念及音频重采样

10. FFmpeg编码+封装实战-心领神会

  • 音频编码实战
  • H264编码原理详解
  • 视频编码实战
  • 音视频H264和AAC合成FLV实战(ffmepg4.2版本)
  • 音视频H264和AAC合成FLV实战(ffmpeg6.0版本)
  • MP4合成实战1-框架分析
  • MP4合成实战2-muxer实现
  • MP4合成实战3-音视频编码实现
  • MP4合成实战4-合成mp4
  • MP4合成实战5-优化

11. FFmpeg过滤器实战-豁然贯通

  • FFmpeg过滤器框架分析
  • 视频过滤器实战
  • 音频过滤器实战
  • FFmpeg filter补充讲解

12. ffplay播放器剖析1-技冠群雄

  • ffplay.c意义
  • ffplay框架分析
  • ffplay数据结构分析
  • ffplay数据读取线程
  • ffplay视频解码线程
  • ffplay音频解码线程
  • ffplay音频输出模块
  • ffplay重采样
  • 视频输出和尺寸变换
  • ffplay图像格式转换

13. ffplay播放器剖析2

  • 音视频同步基础
  • ffplay播放器-音视频为基准
  • ffplay播放器-以视频为基准
  • ffplay播放器-外部为基准
  • ffplay-播放暂停
  • ffplay-帧、调音量、静音
  • ffplay播放器-快进快退seek
  • ffplay播放器-总结

14. FFmpeg+QT播放器实战

  • 播放器项目分析
  • 界面设计1-ctrlbar1
  • 界面设计1-ctrlbar2
  • 界面设计2-titlelbar
  • 界面设计3-playlist-show
  • 界面设计4-完善基本的播放界面
  • 播放器模块分析
  • 打通UI到播放器核心的通道-消息队列
  • 打通UI到播放器核心的通道-类名和接口1
  • 打通UI到播放器核心的通道-类名和接口2
  • 打通UI到播放器核心的通道-类名和接口3

15. FFmpeg+QT播放器实战

  • stream_open和stream_close
  • 解复用、数据读取read_thread设计
  • 解码线程Decoder封装
  • 音频输出
  • 视频渲染输出
  • 基本的音视频同步

16. ffmpeg媒体转换器1

  • 掌握ffmpeg.c的意义
  • ffmpeg框架分析
  • 命令行解析1
  • 命令行解析2
  • mp4转flv-1
  • mp42flv
  • mp4转flv3-filter逻辑
  • mp4转flv4-timebase
  • mp4转flv5-copy
  • mp4转flv6-scale

17. RTMP流媒体实战

  • RTMP流媒体服务器搭建
  • RTMP协议剖析
  • RTMP推流实战
  • RTMP拉流实战

18. HLS流媒体实战

  • HLS流媒体服务器配置
  • HLS框架分析
  • m3u8协议详解
  • TS协议解析
  • HLS抓包分析
  • HTTP协议分析
  • hls拉流源码分析1
  • hls拉流源码分析2
  • nginx-hls-多码率测试环境搭建
  • gdb

19. RTMP/HLS/HTTP-FLV流媒体服务器分析

  • SRS流媒体服务器开发概述
  • SRS流媒体框架入门
  • SRS流媒体服务器-推流框架分析
  • SRS流媒体服务器-RTMP拉流框架分析
  • SRS流媒体服务器-RTMP协议
  • SRS流媒体服务器-RTMP协议2
  • SRS流媒体服务器-RTMP推流消息处理
  • SRS流媒体服务器-HTTP-FLV框架分析
  • SRS服务器-HTTP-FLV-配置文件
  • SRS服务器-HTTP-FLV-推拉

20. RTMP/HLS/HTTP-FLV流媒体服务器分析2

  • SRS服务器-HTTP-FLV-拉流1
  • SRS服务器-HTTP-FLV-拉流2
  • SRS服务器-Forward集群
  • SRS服务器-Forward源码分析2
  • SRS流媒体服务器-edge集群-1
  • SRS流媒体服务器-edge集群-2
  • SRS流媒体服务器-edge集群-3
  • SRS流媒体服务器-HLS文件配置
  • SRS流媒体服务器-HLS拉流分析1
  • SRS流媒体服务器-HLS拉流分析2

21. RTMP/HLS/HTTP-FLV流媒体服务器分析3

  • SRS流媒体服务器-HLS拉流分析3

22. RTSP流媒体实战1

  • RTSP服务器搭建
  • RTSP基本原理
  • RTP协议讲解
  • RTP之H264封包和解包1-封包原理
  • RTP之H264封包和解包2-编码实现
  • RTP之AAC封包和解包1-软件框架分析
  • RTP之AAC封包和解包2-原理和源码解析
  • RTSP协议交互流程
  • SDP协议分析
  • rtcp详解

23. RTSP流媒体实战2

  • rtsp推流实战-框架分析
  • rtsp推流实战-模拟捕获音频
  • rtsp推流实战-模拟捕获视频
  • rtsp推流实战-音频编码器封装
  • rtsp推流实战-音频编码器封装2
  • rtsp推流实战-视频编码器封装
  • rtsp推流实战-队列设计
  • rtsp推流实战-RTSP推流模块
  • rtsp推流实战-实现RTSP正常推流
  • rtsp推流实战-RTSP推流超时处理

24. RTSP流媒体实战3

  • rtsp推流实战-消息处理机制
  • rtsp推流实战-队列优化

25. WebRTC中级-WebRTC基础原理

  • 什么是WebRTC
  • WebRTC框架
  • WebRTC发展前景+国内方案商
  • WebRTC通话原理1-STUN
  • WebRTC通话原理2-TURN
  • WebRTC通话原理3-信令服务器
  • WebRTC通话原理4-一对一通话-补充

26. WebRTC中级-WebRTC开发环境搭建

  • vscode安装和测试
  • nodejs安装和测试
  • coturn安装
  • coturn服务器测试

27. WebRTC中级-音视频采集

  • 打开摄像头(上)
  • 打开摄像头(下)
  • 打开麦克风
  • 打开摄像头+麦克风

28. WebRTC中级-Nodejs实战

  • Web端websocket
  • Nodejs服务器 websocket
  • websocket聊天室实战1-框架分析
  • websocket聊天室实战2-客户端
  • websocket聊天室实战3-服务端
  • 信令服务器map实战

29. WebRTC中级-手把手实现音视频一对一通话(一)

  • 一对一通话原理
  • 信令协议设计
  • RTCPeerConnection补充
  • 页面设计和打开摄像头
  • websocket连接
  • leave和peer-leave信令实现
  • join_new-peer_signal
  • WebRTC API讲解
  • offer_answer

30. WebRTC中级-手把手实现音视频一对一通话(二)

  • 综合调试和完善
  • 部署到公网(上)
  • 部署到公网(下)
  • 部署到公网(补充)
  • Android获取权限和引入库
  • Android信令处理
  • Android WebRTC框架分析
  • Android实战-走读代码
  • eb和Android通话总结

31. WebRTC中级-开源项目简介和AppRTC工程搭建 (9 小节)

  • 开源方案简介
  • AppRTC服务器组成
  • 准备工作
  • AppRTC必要软件安装(1)
  • AppRTC必要软件安装(2)
  • 1coturncolliderapprtc
  • nginx代理和运行测试
  • 解决跨域问题和总结

32. WebRTC高级专题

  • WebRTC音视频通话1
  • WebRTC音视频通话2
  • WebRTC音视频通话3
  • WebRTC音视频通话4-Mesh多人通话项目部署
  • 快播核心技术揭秘 P2P框架的实现(1)
  • 快播核心技术揭秘 P2P框架的实现(2)

33. WebRTC高级-Janus二次开发1

  • janus环境搭建
  • Janus框架分析
  • Janus-ubuntu20.04腾讯云版本
  • Janus信令1
  • web客户端信令分析1
  • web客户端信令分析2
  • web客户端信令分析3-publish流程
  • web客户端信令分析4-subscriber 1
  • web客户端信令分析4-subscriber 2

34. WebRTC高级-Janus二次开发2

  • Janus web客户端源码分析1
  • Janus Web客户端源码分析2
  • Janus Web客户端源码分析3
  • 音视频会议web客户分析-1
  • 音视频会议web客户分析-2

35. WebRTC高级-Janus源码分析

  • Janus服务器-源码结构
  • glib-01-编译和glist
  • glib-02-threads
  • glib-03-asyncqueue
  • glib-04-threadpool
  • glib-05-hashtable
  • glib-06-mainloop-contex

36. WebRTC高级-SRS4.0-1

  • SRS 4.0开发环境搭建
  • SRS 4.0开发环境搭建包括推流、服务器配置、拉流测试-1
  • SRS 4.0开发环境搭建包括推流、服务器配置、拉流测试-2
  • SRS 4.0配置支持WebRTC推拉流1
  • SRS 4.0配置支持WebRTC推拉流2
  • SRS 4.0 RTMP端口监听逻辑
  • SRS 4.0 RTMP推流拉流怎么创建连接
  • SRS 4.0 RTMP推流读取数据,拉流转发数据
  • SRS 4.0 哪些配置文件会影响RTMP的延迟
  • SRS 4.0配置支持WebRTC直播

37-WebRTC高级-SRS4.0-2

  • WebRTC 1v1通话1-配置和测试
  • WebRTC 1v1通话2-逻辑分析
  • rtmp2webrtc测试环境
  • rtmp2webrtc提出问题-灵魂拷问
  • rtmp2webrtc协议转换
  • RTMP2WebRTC逻辑
  • WebRTC2Rtmp测试环境
  • WebRTC2Rtmp协议转换
  • WebRTC2Rtmp逻辑分析

WebRTC高级-SRS4.0-3

  • SRS4.0-ICE交互分析
  • SRS4.0-DTLS握手
  • SRS4.0-SRTP加密传输
  • SRS4.0-SDP详解1
  • SRS4.0-SDP详解2
  • WebRTC常用的缩略词
  • WebRTC的拥塞控制
  • RTCP-报文类型
  • RTCP-SR

39. Android NDK开发

  • So库适配简单总结
  • JNI、NDK、CMake和ndk-build介绍
  • JNI、NDK、CMake和ndk-build介绍
  • 环境搭建1
  • 环境搭建2
  • CMake配置-CMakeList和gradle
  • CMake配置-so目录输出
  • 生成指定cpu平台对应的so库文件
  • JNI基础.和接口生成

40. Android NDK开发2

  • JNIEnv、jobject与jclass详解
  • jni数据类型
  • 类-域-方法描述符
  • ffmpeg编译准备
  • ffmpeg编译fdk-x264-mp3
  • ffmpeg编译完成
  • ffmpeg-android集成
  • 简单播放器功能
  • 播放器分析

41. Android NDK开发3

  • ijkplayer编译
  • ijkplayer项目框架分析
  • ijkplayer状态转换
  • ijkplayer拉流分析
  • ijkplayer解码分析
  • ijkplayer音频播放
  • ijkplayer视频播放

42. cmake-gdb-c++11

  • makefile和cmak
  • C++11重点知识精讲1
  • C++11重点知识精讲2
  • GDB调试技巧

43. FFmpeg实战-H265编解码和硬件编解码

  • H265-NALU分析和解码
  • H265编码实践
  • nvdia硬件编码H264
  • ffmpeg硬件解码
  • FFmpeg两路音视频混流实现-音频混流

44. OBS推流录制源码分析

  • obs-vs2019+qt5编译和调试obs
  • 再次编译OBS为二次开发准备
  • OBS录屏二次开发

45. 服务器-ZLMediaKit RTSP模块

  • ZLMediaKit环境搭建-RTSP
  • ZLMediaKit网络模型框架分析
  • RTSP推拉流框架分析-TCP模型
  • RTSP推拉流框架分析-TCP模型
  • RTSP推拉流框架分析-TCP模型
  • ZLMediaKit推流详解-TCP模式
  • ZLM-RTSP拉流详解-TCP模式-bk
  • RTSP推拉流框架分析-UDP模型

46. FFmpeg6.0

  • ubuntu16.04-编译FFmpeg6.0
  • ubuntu16.04-QT引用FFmpeg6.0
  • Windows10开发环境搭建-编译FFmpeg6.0
  • Windows10开发环境搭建-引用FFmpeg6.0
  • 屏幕录制+推流项目框架讲解

47. IOS高级开发

  • IOS-AudioUnit音频原理
  • IOS-AudioUnit音频采集实例
  • IOS-AudioUnit音频播放实例
  • IOS-AudioUnit音频录制to播放

以上是系统性学习路线,需要课程音视频流媒体高级开发学习资料。面试题、系统性学习课程咨询领取↓↓↓↓↓↓↓
[音视频流媒体高级开发学习资料]

项目实战

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐