音视频解码流程
原理上讲: 我们所看到的有声视频,其实是视频和音频数据同步的结果.
视频的播放过程
- 封装视频格式(flv,mp4)等,解封装 ,
- 变为 视频压缩的数据(H.264),
- 再经过解码,变成原生的像素数据(YUV),
- 最后在画布载体(surfaceview等),一帧帧绘制的过程.
音频的播放过程
- 封装视频格式(MP3,wma)等,解封装 ,
- 变为 视频压缩的数据(AAC,MP3),
- 再经过解码,变成原生的像素数据(PCM),
- 最后重新采样播放的过程.
相关原理知识工具
相关查看工具
- 封装格式:Elecard Format Analyzer
- 视频编码数据:Elecard Stream Eye
- 视频像素数据:YUV Player
- 音频采样数据:Adobe Audition
视频编码数据
视频编码的作用
- 将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降
低视频的数据量(目前直播就是如此)。
- 将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降
常见的视频编码格式
H.264格式简介
- 数据由大小不固定的NALU构成
最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据。
- 数据由大小不固定的NALU构成
- H.264压缩方法
- 比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节
构成。本课程不对其中的算法做过多介绍。
. 可以将图像数据压缩100倍以上。
- 比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节
视频像素数据
- 视频像素数据作用
- 保存了屏幕上每个像素点的像素值。
格式
- 常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,
YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常
见的格式为YUV420P。
- 常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,
特点
- 视频像素数据体积很大,一般情况下1小时高清视频的RGB24
格式的数据体积为:
3600*25*1920*1080*3=559.9GByte
PS:这里假定帧率为25Hz,取样精度8bit。
- 视频像素数据体积很大,一般情况下1小时高清视频的RGB24
- YUV格式像素数据查看工具
- YUV Player
- YUV Player
音频编码数据
- 音频编码的作用
- 将音频采样数据(PCM等)压缩成为音频码流,从而降低音
频的数据量。
- 将音频采样数据(PCM等)压缩成为音频码流,从而降低音
- AAC格式简介
- 数据由大小不固定的ADTS(Audio Data Transport Stream 音频数据传输流)构成.
音频采样数据
- 音频采样数据作用
- 保存了音频中每个采样点的值。
- 特点
- 音频采样数据体积很大,一般情况下一首4分钟的PCM格式的
歌曲体积为:
4*60*44100*2*2=42.3MByte
PS:这里假定采样率为44100Hz,采样精度为16bit。
- 音频采样数据体积很大,一般情况下一首4分钟的PCM格式的
- 音频采样数据查看工具:Adobe Audition
- PCM格式简介
- 单声道的情况下按照顺序存储每个采样点的数据。
- 双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声
道的数据。