音视频流媒体开发是一个涉及多种技术和知识领域的实践领域。以下是一份指南,帮助你系统学习流媒体开发:
-
理解基础概念:
习关于音视频数据的基础知识,包括常见的音频与视频格式、编解码器(codec)、容器格式等。
了解流媒体的基本工作原理,包括直播和点播的区别,以及如何通过互联网传输音视频流。 -
掌握关键技术:
网络技术:了解TCP/IP、UDP、HTTP、RTMP、HLS、DASH等网络协议的工作机制。
编解码技术:熟悉H.264/AVC、H.265/HEVC、Opus、AAC等流行的音视频编解码技术。 -
深入FFmpeg:
学习FFmpeg的使用,这是一个强大的工具集合,用于处理视频和音频数据。
通过FFmpeg进一步深入了解音视频转码、封装和流化过程。 -
编程技能提升:
C/C++:深入C/C++编程知识,因为许多流媒体开发项目,包括FFmpeg,是用C/C++编写的。
网络编程:掌握套接字编程,学习使用网络库(如Boost.Asio)进行高效的网络通信。
多线程和并发:学习如何在多核心处理器上高效地处理多个音视频流。 -
实际项目经验:
参与开源项目:同FFmpeg等开源项目贡献代码,了解流媒体服务器的开发。
实践构建自己的流媒体服务器,学习如何处理客户端连接、流同步和内容分发。 -
学习相关框架和库:
掌握如Live555、GStreamer、webrtc等流媒体相关的框架和库。
遵循上述指南,结合实际代码练习和项目开发,逐步建立起自己的音视频流媒体开发能力。
学习书籍推荐
音视频开发作为一个专业性较强的领域,入门时选择合适的书籍至关重要。以下是一些建议的入门书籍,它们可以帮助你建立音视频开发的基础知识框架:
-
《数字音频处理》
该书籍被视为数字音频处理领域的经典入门书籍,虽然不是特别侧重编码方面,但提供了深入浅出的数字音频基础知识,适合初学者。 -
《数字图像处理》
与音频处理相似,图像处理也是音视频领域的基础。这本书内容全面,是处理数字图像的入门教科书。 -
《FFmpeg从入门到精通》
FFmpeg是处理音视频的重要工具,学习如何使用FFmpeg对音视频数据进行编解码、转码、封装等操作是入门音视频开发不可或缺的环节。 -
《音视频开发进阶指南:基于Android与iOS平台的实践》
如果你的目标方向是在移动平台进行音视频开发,这本书提供了囊括Android和iOS平台的音视频开发技术与案例,适合初学者系统学习。 -
《音频信号处理与编码》
这本书较为全面地涵盖了音频处理的基础知识,并介绍了音频信号的压缩编码技术和标准。 -
《视频编解码技术入门》
针对视频编码技术进行了深入浅出的讲解,适合编解码技术的初学者。 -
《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播放
以上是系统性学习路线,需要课程音视频流媒体高级开发学习资料。面试题、系统性学习课程咨询领取↓↓↓↓↓↓↓
音视频流媒体高级开发学习资料
项目实战