音视频C++开发进阶指南

目录

[一、音视频 C++ 岗位「必须掌握」(核心基础)](#一、音视频 C++ 岗位「必须掌握」(核心基础))

[1️⃣ 音视频基础原理(面试必问)](#1️⃣ 音视频基础原理(面试必问))

[🎵 音频基础](#🎵 音频基础)

[🎬 视频基础](#🎬 视频基础)

[2️⃣ FFmpeg(音视频 C++ 的绝对核心)](#2️⃣ FFmpeg(音视频 C++ 的绝对核心))

必须掌握

[必会 API(重点)](#必会 API(重点))

必做练习

[3️⃣ 音视频数据处理能力(很重要)](#3️⃣ 音视频数据处理能力(很重要))

视频

音频

二、进阶能力(区分普通和大厂)

[4️⃣ 实时音视频(非常重要)](#4️⃣ 实时音视频(非常重要))

协议

核心问题

[5️⃣ WebRTC(大厂必杀技)](#5️⃣ WebRTC(大厂必杀技))

[WebRTC 必会点](#WebRTC 必会点)

实战目标

[6️⃣ 音视频播放器 / 推流器](#6️⃣ 音视频播放器 / 推流器)

播放器

推流器

[三、高阶 / 大厂加分项(拉开差距)](#三、高阶 / 大厂加分项(拉开差距))

[7️⃣ 性能与系统能力(C++ 大厂非常看重)](#7️⃣ 性能与系统能力(C++ 大厂非常看重))

[8️⃣ 跨平台 & 工程能力](#8️⃣ 跨平台 & 工程能力)

[9️⃣ 算法方向(可选但非常加分)](#9️⃣ 算法方向(可选但非常加分))

四、推荐学习路线(适合你)

[📍 第 1 阶段(1--2 个月)](#📍 第 1 阶段(1–2 个月))

[📍 第 2 阶段(2--3 个月)](#📍 第 2 阶段(2–3 个月))

[📍 第 3 阶段(3 个月)](#📍 第 3 阶段(3 个月))


一、音视频 C++ 岗位「必须掌握」(核心基础)

1️⃣ 音视频基础原理(面试必问)

🎵 音频基础

  • PCM、WAV、MP3、AAC 区别

  • 采样率 / 采样位数 / 声道数

  • 音频帧 vs 音频包

  • 音频编码流程(PCM → 编码 → 压缩)

  • 重采样、混音原理

  • 常见音频编码:

    • AAC(LC / HE / HEv2)

    • Opus(大厂高频)

🎬 视频基础

  • YUV / RGB 区别(重点)

    • YUV420P / NV12 / NV21
  • 分辨率、帧率、码率

  • GOP / I帧 / P帧 / B帧

  • Annex-B vs AVCC

  • 视频编码流程

  • 常见视频编码:

    • H.264(必须

    • H.265 / VP9 / AV1(了解)

📌 面试常问:

YUV420 为什么省带宽?

I 帧为什么大?

GOP 变大有什么影响?


2️⃣ FFmpeg(音视频 C++ 的绝对核心)

👉 不会 FFmpeg = 基本进不了音视频岗

必须掌握

  • FFmpeg 整体架构

  • 核心模块:

    • libavformat(封装/解封装)

    • libavcodec(编解码)

    • libavutil

    • libswscale(视频转换)

    • libswresample(音频重采样)

必会 API(重点)

  • avformat_open_input

  • avformat_find_stream_info

  • avcodec_find_decoder / encoder

  • avcodec_open2

  • av_read_frame

  • avcodec_send_packet

  • avcodec_receive_frame

  • av_frame

  • av_packet

  • 时间戳:PTS / DTS / time_base

必做练习

✅ 本地视频解封装

✅ 解码 H.264 → YUV

✅ PCM 重采样

✅ 编码 AAC / H.264

✅ 音视频同步(基础)


3️⃣ 音视频数据处理能力(很重要)

大厂喜欢考**"你到底懂不懂数据"**

视频

  • YUV 转 RGB

  • 缩放、裁剪

  • 颜色空间转换

  • NV12 ↔ YUV420P

  • 软解 vs 硬解(概念)

音频

  • PCM 重采样

  • 音量调整

  • 多路混音

  • 回声消除 / 噪声抑制(原理)


二、进阶能力(区分普通和大厂)

4️⃣ 实时音视频(非常重要)

抖音 / 腾讯 / 阿里 / 快手 = 全是实时

协议

  • RTP / RTCP(重点)

  • RTSP

  • WebRTC(大厂高频

  • FLV / HLS(直播)

核心问题

  • 音视频同步策略

  • 抖动缓冲(Jitter Buffer)

  • 丢包重传

  • 延迟控制

  • 弱网对策

📌 面试常问:

实时音视频如何降低延迟?

RTP 和 RTMP 的区别?


5️⃣ WebRTC(大厂必杀技)

如果你目标是 腾讯 / 字节 / 阿里一定要会

WebRTC 必会点

  • WebRTC 架构

  • SDP

  • ICE / STUN / TURN

  • SRTP

  • NACK / FEC

  • AEC / AGC / NS

实战目标

  • 跑通 WebRTC demo

  • 理解音视频采集 → 编码 → 传输 → 解码 → 渲染


6️⃣ 音视频播放器 / 推流器

播放器

  • 缓冲区设计

  • 解码线程

  • 音视频同步

  • 快进 / 快退

推流器

  • RTMP / RTP 推流

  • 时间戳处理

  • 丢帧策略


三、高阶 / 大厂加分项(拉开差距)

7️⃣ 性能与系统能力(C++ 大厂非常看重)

  • 多线程解码架构

  • 锁优化

  • 内存池

  • 零拷贝

  • SIMD(了解)

  • 硬件加速(NVDEC / VAAPI / MediaCodec)


8️⃣ 跨平台 & 工程能力

  • Linux 音视频开发(重点)

  • Android NDK(C++ 音视频)

  • iOS AVFoundation(了解)

  • CMake

  • 动态库 / 静态库

  • 编译 FFmpeg


9️⃣ 算法方向(可选但非常加分)

  • 编码器原理(x264 / x265)

  • B 帧参考

  • 码率控制(CBR / VBR / ABR)

  • QoE 指标


四、推荐学习路线

📍 第 1 阶段(1--2 个月)

  • 音视频基础 + FFmpeg API

  • 解封装 / 解码 / 编码

  • 本地播放器

📍 第 2 阶段(2--3 个月)

  • RTMP / RTP

  • 音视频同步

  • 推流器

  • 弱网处理

📍 第 3 阶段(3 个月)

  • WebRTC

  • 实时音视频项目

  • 性能优化

相关推荐
灰子学技术20 分钟前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
二十雨辰1 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码1 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚1 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂1 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas1361 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript
琹箐1 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
Monly212 小时前
Java:修改打包配置文件
java·开发语言
我命由我123452 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
island13142 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络