我们经常使用的抖音、爱奇艺、腾讯视频、优酷视频,只要是非直播的部分,都可以称之为点播视频。
点播视频能够顺利播放,是因为它的背后有一个复杂的视频点播系统。
视频点播系统有两个核心链路:
- 视频生产
视频采集 → 编码 → 封装 →本地存储 → 上传 → 原视频存储 → 转码 → 切片 → 切片视频存储
- 视频消费
云端存储 → 分发 → 播放器播放
一、 视频生产数据链路
【客户端】
物理世界(光)
↓
视频采集模块(原始信号raw)
↓
图像信号处理器ISP(YUV/RGB)
↓
视频编码器(压缩视频流 H.264/H.265)
↓
封装器(MP4、FLV、MPEG-TP)
↓
本地存储(MP4、FLV、MPEG-TP)
↓
上传模块(FLV、MP4、MPEG-TP)
【云端】
接入服务(FLV、MP4、MPEG-TP)
├─→ 原始文件存储(存储服务器)
└─→ 转码服务(多分辨率+多编码组合的视频文件 MP4等)
↓
切片服务(m3u8 + ts分片)
↓
切片视频存储(存储服务器)
视频采集模块
🧠 职责
- 从物理世界采集图像,并转成数字信号。
📥 输入
光学信号(现实世界)
📤 输出
原始视频信号(RAW)
🧩模块形态
摄像头
👥 参与方(产业链角色)
摄像头研发生产的所有参与方,主要有:
- 传感器厂商:豪威、索尼、三星等;
- 镜头厂商:蔡司、哈苏、联创、亚洲光学、舜宇等;
- 马达厂商(对焦 / 变焦):阿尔卑斯、新思考、中蓝、三星电机、皓泽、美拓等
- 摄像头模组厂商(相当于组装厂,把前面的有机组合起来):欧菲光、丘钛、舜宇模组、信利、光宝等
图像信号处理器ISP(Image Signal Processor)
🧠 职责
对原始视频信号(RAW) 做一系列处理:
- 去噪
- 白平衡
- 曝光
- HDR
- 色彩校正
最后转换成YUV格式。
📥 输入
原始视频信号:布满噪音点、颜色偏暗,只有单色信息的马赛克图像。
📤 输出
RGB or YUV格式信号:我们可以看懂并且显示器可以展示。
🧩模块形态
大部分ISP是SOC中一块电路区域;部分高端设备是一块独立的ISP芯片。
👥 参与方(产业链角色)
手机SOC厂商:高通、联发科、苹果、三星、华为海思、紫光展锐、瑞芯微等;
垂直领域SOC厂商(安防 / 车载 / 无人机/穿戴等):海思、安霸、星宸;
独立ISP:安森美、富瀚微、小米(自用)、vivo(自用)、大疆(自用)。
视频编码器
🧠 职责
在尽量保持画质的前提下,把视频数据压缩到最小,它主要有两个功能:
- 视频数据编码压缩
- 码流控制
📥 输入
YUV视频数据
📤 输出
压缩视频流(H.264 / H.265)
🧩模块形态
- 硬编码-硬件单元:SoC里的专用编码硬件单元,特点快、低功耗。通过操作系统提供API调用,在 Android 上通过MediaCodec 调用;在iOS 平台通过VideoToolbox调用。
- 软编码-软件模块:集成在操作系统或者多媒体框架中的软件模块,特点支持格式广、扩展方便。常见的软解码库有libaom、x264、x265等,他们可以直接被调用,也有的通过多媒体处理框架FFmpeg进行调用。
👥 参与方(产业链角色)
- 编解码标准制定者:如ITU-T、ISO/IEC、MPEG等;
- 芯片厂商(硬编码提供者)把编码器“做进芯片”:比如有Qualcomm、MediaTek、Apple、NVIDIA等;
- 软编解码厂商:开源的有x264、x265; 商业的有Ateme、MainConcept;
- 多媒体处理工具:FFmpeg
- 系统厂商(系统封装,提供统一接口):比如:Google(Android)、Apple(iOS)、PX4 / ArduPilot等;
视频封装器
🧠 职责
封装层 = 数据组织 + 同步 + 索引
1️⃣ 数据组织(Mux)
👉 把多种流组合在一起:
- 视频流(H.264 / H.265)
- 音频流(AAC)
- 字幕流
👉 变成一个文件:
- MP4 / MKV / TS
2️⃣ 时间同步
👉 解决问题: 音视频怎么对齐?
👉 保证:声音和画面一致
3️⃣ 索引与定位
👉 支持:
- 快进 / 快退
- seek(拖进度条)
📥 输入
👉 来自编码层:
- 视频码流(H.264 / H.265)
- 音频码流(AAC)
👉 以及:
- 时间戳(PTS / DTS)
- 参数信息(分辨率、采样率等)
📤 输出
👉 一个“容器格式”文件或流:
常见👇
- MP4
- MKV
- MPEG-TS
- FLV
🧩 模块形态
- 封装器通常作为操作系统或播放器的一个功能模块存在,也可以以独立工具的形式对外提供能力。比如在Android系统中封装器MediaMuxer就是Android系统媒体框架的一部分。
👥 参与方(产业链角色)
1️⃣ 标准制定者
- ISO/IEC(MP4)
- MPEG
👉 定义:
- 容器结构
- box格式
- 时间戳规则
2️⃣ 工具 / 框架提供方
比如:
- FFmpeg
- GStreamer
👉 提供:
- mux 封装 / demux解封装的能力
3️⃣ 播放器厂商/操作系统
对封装和解封装框架的封装使用
- Android系统内置的MediaPlayer
- ExoPlayer
播放器通常内置解封装实现(如基于 FFmpeg),与系统提供的解封装能力(如 MediaExtractor)形成并行的实现路径,运行时根据场景选择使用。
本地存储
封装完成后,视频数据已经成为标准容器格式(如 MP4),接下来进入“存储层”。
存储层负责通过操作系统提供的文件接口(或设备存储接口)将视频数据持久化保存,例如写入本地文件系统或存储设备。
由于该部分主要涉及通用存储能力,这里不做展开。
视频上传模块
🧠 职责
- 把本地文件“稳定、高效地传输到服务器”
⚙️ 具体功能
- 文件切片(将大文件拆分为小块)
- 上传任务管理(上传会话 / 进度管理)
- 分片上传(支持顺序或并发上传)
- 断点续传(失败后从中断位置继续)
- 数据校验(保证数据完整性)
- 上传结果回调处理
🧩 模块形态
软件模块:1 应用中的业务模块 2 单独具备上传能力的sdk;
🔄 核心流程
选择文件
↓
文件切片(chunk)
↓
创建上传会话(uploadId)
↓
分片上传(可并发)
↓
服务端校验/合并文件
↓
返回云端视频地址URL
📜使用协议
协议本质上是一种通信双方约定的规则体系,用于规范数据的表达方式、传输方式以及异常处理机制,从而保证信息在网络环境中能够被准确、可靠地传递和理解。
相比普通数据,视频具有:
- 数据量大(GB级)
- 传输时间长
- 对完整性和实时性敏感
👉 因此需要专门视频协议来保证:
- 数据可靠传输
- 顺序与完整性
- 异常处理(丢包、重传等)
其次在视频传输不同的场景的要求也不同
📦 上传(文件传输)
- 要求:完整性优先
- 特点:允许延迟
👉 使用:HTTP + TCP
📺 点播(在线播放)
- 要求:可缓冲、可拖动
👉 使用:HLS / DASH
📡 直播(实时传输)
- 要求:低延迟
👉 使用:RTMP / WebRTC
接入服务器
在视频完成上传后,数据已经到达云端,接下来进入“接入服务器”环节。
接入服务器负责接收客户端请求,并将其路由到后端系统,是视频云端系统的统一入口。
接入服务器 = 流量入口 + 安全网关 + 路由中心
它主要承担:
1️⃣ 请求接入
- 接收上传请求(HTTP / HTTPS)
- 处理客户端连接
2️⃣ 安全与鉴权
- 校验用户身份
- 校验上传权限
3️⃣ 流量控制
- 限流(防止恶意请求)
- 防刷、防攻击
4️⃣ 请求转发
👉 将请求转发到后端服务:
- 视频上传服务
- 对象存储服务
- 转码系统服务
视频接入服务器需要考虑在视频场景下大流量和长连接请求,并通常通过鉴权后将数据直接引导至对象存储等后端系统。
🎬 视频转码服务
🧠 职责
将视频文件转换为另一种清晰度、编码格式或封装格式,以适应不同网络带宽、不同终端播放设备的使用场景,具体包含
- 编码格式转换(H.264 / H.265 / AV1)
- 分辨率转换(4K / 1080p / 720p)
- 码率控制(Bitrate)
- 生成多码率版本
⚙️ 核心处理流程
输入文件(MP4 / TS)
↓
👉 解封装(demux)
↓
音视频码流(H.264 / AAC)
↓
👉 解码(decode)
↓
原始帧(YUV)
↓
视频处理(缩放 / 裁剪)+AI视频增强
↓
👉 编码(encode)
↓
压缩码流(H.264 / H.265)
↓
👉 封装(mux)
↓
输出文件 / 分片(MP4 / TS)
转码不是“简单转换”,而是“视频播放优化”中重要的一个环节。
视频转码属于计算密集型任务,通常部署在专门的转码计算集群中,并可借助GPU或专用硬件加速;
在实际工程中,很多系统会直接使用云厂商(阿里云、百度云、亚马逊)提供的转码服务来降低成本与复杂度
切片服务(Segment)
🧠 职责
切片服务的功能是把一个完整视频拆成多个按时间划分的小片段(segment),这样视频就可以实现流式播放。
原视频(60s)
↓
0~5s | 5~10s | 10~15s ...
同时会生成一个索引文件(如 m3u8 / mpd),索引文件有点像听歌软件中的播放列表,记录了播放顺序和每个片段的播放时长等信息。
它的核心功能:
- 时间切片(按固定时长分段)
- 多码率对齐(不同清晰度片段时间一致)
- 关键帧对齐(保证每个片段可独立解码)
- 生成索引文件(供播放器调度)
⚙️ 核心处理流程
转码输出视频流
↓
关键帧对齐
↓
基于时间进行切片
↓
生成分片文件(ts / fmp4)
↓
生成索引文件(m3u8 / mpd)
切片服务将完整视频拆分为多个可独立播放的时间片段,并生成索引文件,使视频能够支持流式播放和自适应码率切换。
📦 视频存储服务
🧠 职责
保存视频数据,并支持高效读取与分发。
存储服务将视频数据(文件 / 分片)持久化保存,并提供可访问地址的服务,存储的对象包括:
- 完整视频(MP4)
- 转码后的视频
- 切片文件(ts / m4s)
- 索引文件(m3u8 / mpd)
存储服务核心功能:
- 数据持久化(防止丢失)
- 高并发读取(支持大量用户访问)
- URL访问(提供统一资源地址)
- 分片存储(适配流媒体结构)
- 冗余备份(保证可靠性)
⚙️ 核心处理流程
输入:完整视频 or 切片后的视频切片+索引
↓
写入存储系统(对象存储)
↓
生成访问URL,提供给 CDN / 播放器读取
视频存储服务负责持久化保存视频及其分片数据,并通过统一的URL对外提供访问能力,是连接视频处理与分发的基础设施。
视频系统通常使用对象存储(如 S3 / OSS),以支持海量数据与高并发访问
二、 视频消费数据链路
🧠 职责
视频消费数据指视频从存储系统出发,经由网络分发,最终被播放器获取并播放的过程。
它的核心职责是 高效、稳定地将视频数据传输到用户端并完成播放
主要功能有:
- 内容分发(CDN加速)
- 分片拉取(按需加载 segment)
- 自适应码率(根据网络切换清晰度)
- 解封装(解析索引和分片)
- 解码与渲染(显示画面)
⚙️ 核心处理流程
播放器请求URL
↓
CDN返回视频索引文件m3u8
↓
解析索引文件(m3u8)
↓
获取分片地址
↓
请求视频分片(ts/m4s)
↓
协议数据包(HLS/DASH)
↓
解析协议
↓
封装格式数据(MP4/TS)
↓
解封装(demux)
↓
音视频分离
↓
解码(MediaCodec)
↓
原始视频数据YUV、RGB+原始音频PCM
↓
音视频同步
↓
渲染输出(屏幕/扬声器)
这个处理流程中的相关方其实前面都介绍过,这里就不一一介绍,可能关键就是了解哪些是播放器的功能,哪一些是系统支持,哪一些是业务层,请参考
小结
视频点播系统目标是让任何一个用户,在任何网络环境下,都可以流畅地观看同一个视频。
- 在生产侧,通过采集、编码、转码与切片,将一个原始视频加工成多码率、可流式分发的标准化数据;
- 在消费侧,通过存储、CDN分发与播放器解码渲染,把这些数据稳定、高效地送达到用户终端并还原为视听体验。
在未来,这条链路正在被AI深刻重塑——大模型与智能算法开始介入视频生产(自动剪辑、智能转码、内容理解)、分发(个性化推荐、动态码率优化)以及消费(AI超分-画质提升、语音交互、内容总结),使得视频系统从“被动传输数据”逐渐演进为“理解内容、服务用户”的智能系统。