音视频技术原理
音视频技术原理
- 播放器的数据处理流程
- 封装格式
按照
一定的格式
,
把音视频流和描述数据
,
存储到文件中
- 编码格式:
- 音频编码
G.711, G722, G726, AAC,MP1/MP2/MP3, AC-3, WMA
…
视频编码
:
h265/H264/H263,MPEG1/2/3/4, WMV, MJPEG, VP8/VP9…
- 视频编码原理
经典的
IPB
压缩
:
Iframes:
节点图像
,
保存
一帧完整图像压缩后的
数据
,
编
解码不涉及自己以外的任何
图像
Pframes:
预测图像
:
仅
保存当前帧与前一帧的差值
信息
,
解码
依赖于前一帧
数据
Bframes:
前后
预测
图像
:
保存
当前帧与前一帧和后一帧的差值
信息
,
可双向单帧逐步播放
视频编码原理
以H264为例
图像
群组
(GOP)
图像群组就是一组连续的图像
, GOP
总是以
I frame
为起始点
,
后面有若干
P frame
和
Bframe,
下一个
I frame
则是新的
GOP
起点
硬件编解码
硬件编解码
是图形芯片
厂家提出
的
用
GPU
资源解码视频流的方案
(
软
解是用
CPU
承担解码
工作
)
优点
是编解码效率高,功耗低、热功耗低,缺点存在局限性,
设置较为
复杂
,
一般需要使用图形芯片厂商提供的驱动和
sdk
程序
为什么
GPU
编解码速度快于
CPU?
• CPU
主要为串行指令而优化,而
GPU
则是为大规模的并行运算而
优化
• 从
并行的角度来看,现代的多核
CPU
针对的是指令集并行(
ILP
)和任务并行(
TLP
),而
GPU
则是数据并行(
DLP
)
• 在
同样面积的芯片之上,
CPU
更多的放置了多级缓存(
L1/L2/LLC
)和指令并行相关的控制部件(乱序执行,分支预测等等),而
GPU
上则更多的是运算单元(整数、浮点的乘加单元,特殊运算单元等等)
• GPU
往往拥有更大带宽的
Memory
,
也就是显
存,因此在大吞吐量的应用中也会有很好的性能
- 音视频协议
HLS,RTSP/RTP/RTCP,
H323,SIP, RTMP…
- 开源框架
vlc
,
ffmpeg
,
gstreamer
,
directshow
,live555,
webRTC
…