音视频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

  • 实时音视频项目

  • 性能优化

相关推荐
白昼流星!2 小时前
C++ 封装的经典实践:从立方体到点圆关系的面向对象思考
c++
leiming62 小时前
c++ 利用模板创建一个可以储存任意类型数据的数组类
开发语言·c++·算法
thinkMoreAndDoMore2 小时前
AGX&AGX音频概念介绍
音视频
Bruce_Liuxiaowei2 小时前
Python 跨平台 Nmap 自动化扫描工具:从手动到一键批量扫描
开发语言·python·网络安全·自动化
派大鑫wink2 小时前
【Day1】Java 入门:开发环境搭建(JDK 安装 + IDEA 配置 + HelloWorld 实战)
java·开发语言·intellij-idea
lingran__2 小时前
C语言内存函数详解
c语言·开发语言
千殇华来2 小时前
音频基础知识(二)
音视频
lsx2024062 小时前
R JSON 文件
开发语言
围炉聊科技2 小时前
Meta SAM Audio:多模态音频分割的新纪元
音视频