音视频核心概念 | 音视频面试题集锦 45 期

本篇介绍音视频核心概念面试题。来自公众号“关键帧Keyframe”的分享,对于想要开始学习音视频技术或进入该行业的朋友是份不错的入门资料。

1、FFmpeg 架构与基础

Q:什么是 FFmpeg 及其核心组件?
A:FFmpeg 是开源多媒体框架,提供录制、转换、流式传输能力。
核心组件:

库 / 工具作用
libavformat容器(解)复用
libavcodec编解码
libavutil通用工具
libswscale视频缩放与色彩空间转换
libpostproc后期处理
ffmpeg命令行转码
ffplay简易播放器
ffserver流媒体服务器(已废弃)

2、数据结构层次

Q:FFmpeg 数据结构层次如何工作?
A:四层模型:

  1. 协议层
    AVIOContextURLProtocol → HTTP/RTMP/RTSP
  2. 解/复用层
    AVFormatContextAVInputFormat → MP4/FLV/TS
  3. 编解码层
    AVCodecContextAVCodec → H.264/AAC
  4. 数据存储
    AVPacket(压缩) ↔ AVFrame(原始)

3、视频压缩基础

Q:为何原始视频可压缩到更小体积?
A:利用五种冗余:

  • 空间相邻像素相似
  • 时间帧间内容重复
  • 编码像素值概率不均
  • 视觉人眼对高频不敏感
  • 知识规则结构可预测

Q:什么是 GOP?
A:Group of Pictures,由一个 I 帧和多个 P/B 帧组成。

  • GOP 越大 → 压缩率越高,随机访问越差
  • GOP 越小 → 适合快速 seek 和错误恢复

Q:MPEG 帧类型?

类型参考关系大小用途
I仅自身随机访问点
P前向参考前向预测
B双向参考最高压缩率

4、核心结构体辨析

Q:AVFormatContext vs AVInputFormat
A

  • AVFormatContext → 实例(含状态、流信息)
  • AVInputFormat → 模板(函数指针,如 read_header
    通过 avformat_open_input() 绑定。

Q:解释 AVPacket 关键字段
A

  • pts/dts:显示/解码时间戳
  • data/size:压缩数据指针/长度
  • stream_index:所属流序号
  • flagsAV_PKT_FLAG_KEY 等标志

5、流媒体协议

Q:直播 vs 点播区别?

维度直播点播
时态实时生成预生成
交互推流+拉流同步任意 seek
缓存边缘热缓存CDN 冷缓存
协议RTMP/UDPHTTP/HLS/DASH

Q:常见协议对比?

协议传输延迟穿透备注
RTMPTCP 19351–3 s一般推流主流
HLSHTTP5–30 s优秀iOS 原生
HTTP-FLVHTTP1–3 s优秀低延迟播放
WebRTCUDP< 1 s优秀连麦场景

6、性能优化

Q:如何实现“秒开”?
A

  1. DNS 预解析 → 直接 IP 播放
  2. GOP 缓存 → 服务端缓存最新 GOP(1–2 s)
  3. 减少探测 → probesize/analyzeduration 调小
  4. 首帧零缓冲 → 立即送解码器

Q:低延迟与流畅如何平衡?

  • 低延迟:UDP、小 GOP、硬件编码、动态缓冲 50–150 ms
  • 流畅:自适应码率、 jitter buffer、分离拉流/解码线程、重连机制

7、编解码格式

Q:H.264 vs H.265 差异?

项目H.264H.265
块单元16×16 宏块8×8–64×64 CTU
帧内模式9 种35 种
运动矢量≤ 16 × 16≤ 64 × 64
压缩率基准↑ 50 %
计算复杂度高 3–5×

Q:为何用 YUV 而非 RGB?

  • 带宽:色度子采样(4:2:0)减半数据量
  • 兼容:黑白电视向前兼容
  • 压缩:人眼对亮度更敏感

8. 音频处理

Q:AAC vs PCM?

特征PCMAAC
压缩有损
大小↓ 80 %
质量无损接近 CD
元数据采样率/声道/比特率

Q:音频测试维度?

  • 功能:播放/录制、格式兼容、3A(AEC/AGC/ANR)
  • 性能:延迟、CPU、内存、功耗
  • 质量:POLQA、主观 MOS
  • 兼容:设备、系统、网络条件

9. 实际实现

Q:视频/图像合成步骤?

  1. 解复用 → 提取流
  2. 解码 → 原始帧
  3. 分辨率/时序处理 → 统一尺度与 pts
  4. 混合/叠加 → 滤镜(overlayblend
  5. 编码 → 目标格式
  6. 复用 → 输出容器

Q:硬解 vs 软解?

维度硬解软解
单元GPU/VPUCPU
功耗
格式支持有限任意
更新依赖驱动灵活
跨平台需要适配通用

10. 面试速答金句

  • “FFmpeg 四层模型:协议→格式→编解码→数据”
  • “GOP 平衡:越大压缩率↑,随机访问↓”
  • “秒开三板斧:DNS 预解析 + GOP 缓存 + 探测减小”
  • “低延迟=UDP+小GOP+硬编+动态缓冲”
  • “零拷贝用 AVBufferRef,池化用 AVFrame/AVPacket 预分配

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论