音视频基础概念

视频

基础概念
  • 码率

单位时间图像的取样率,单位kbps、mbps;
码率 = 文件大小(kbyte)* 8 / 秒;
与压缩方法,摄像机采样有关,原图的取样率;
在这里插入图片描述

  • 帧率

单位时间的帧数,单位fps;
动画的流畅性;

  • 压缩率

压缩后文件大小 / 压缩前文件大小 * 100%;
冗余:
空间冗余:图像相邻像素间有很强的相似性;
时间冗余:相邻图像之间的相似性;
视觉冗余:人视觉对某些细节不敏感;

  • 分辨率

衡量图像的数据量多少,单位dpi;
像素点更多,画面更精细;

容器格式
  • MP4

MP4广泛被用于封装h.264/h.265视频和AAC音频;
媒体头庞大;
播放器播放视频前计算和存储好一切流信息还有时间索引等(媒体信息播放到再解析)
mp4是由一个个“box”组成的,大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:
在这里插入图片描述
一些概念:
track:一些sample的集合,表示一个视频和一段音频序列;track里的每个时间单位是一个sample
sample:一帧或者一组连续视频帧;一帧音频可以分解成多个音频sample,所以音频一般用sample作为单位,而不用帧;sample是媒体数据存储的单位,存储在media的chunk中
sample table:sample的时序和物理布局的表
chunk:一个track的几个sample组成的单元;
size指明了整个box所占用的大小,包括header部分。如果box很大(例如存放具体视频数据的mdat box),超过了uint32的最大数值,size就被设置为1,并用接下来的8位uint64来存放大小。
stsc:sample - chunk映射表:
在这里插入图片描述
常见的MP4结构(有更复杂的):
在这里插入图片描述
在这里插入图片描述
MP4分割算法:
获取关键帧列表;
选择要分割的时间段;
重新生成MOOV box;
拷贝对应元数据,生成文件;stsc entry(表)需要重新映射;
mp4 的 seek(快进,快退) 操作逻辑是:给定一个 seek的目标时间戳(timestamp),根据mp4 里每个包的索引信息,找到时间戳对应的包就可以了。根据下面的 mp4 的文件组织结构,利用Sample Table,可以快速找到任意给定时间戳,返回我们期望的时间戳的前一个关键帧的时间戳的 video audio 数据包;
倍速:比如原本是24帧播放,以48帧播放或者跳帧播放;但不能超过显示器的显示极限和显卡的计算极限;

  • AVI

AVI 文件是目前使用的最复杂的RIFF文件(chunk是RIFF文件的单元,主要结构就是嵌套chunk),它能同时存储同步表现的音频视频数据。AVI的 RIFF 块的形式类型是AVI,它包含3个子块:信息块、数据块、索引块。
在这里插入图片描述

  • FLV

LV容器格式包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成;
在这里插入图片描述

编码格式
  • H.264

编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、 变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。
帧内预测压缩,解决的是空域数据冗余问题。
帧间预测压缩(运动估计与补偿),解决的是运动矢量的补偿(时域数据)冗余问题。
整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化。
CABAC压缩。
I帧:关键帧;P帧:向前参考帧;B帧:双向参考帧;
GOP序列:两个I帧之间是一个图像序列,在一个图像序列中只有一个I帧。
--------------------------------------------------------------------------------------------------------------------
压缩原理:
1、一段视频序列,按帧取样;
2、对帧划分宏块(16x16、8x8),计算像素值;
3、在宏块上划分子块,帧内压缩;
4、对帧进行分组GOP,关键帧存储原始图像,帧间压缩;
5、运动矢量与补偿,帧间压缩,相同的部分减去,得到补偿数据,保存;
6、帧内预测,利用人眼对高频亮度不敏感,把这类部分数据去掉,有多个预测模型,选取最接近的一个。解码时将图像预测模式和预测的图像值结合起来恢复数据。
7、DCT压缩,将残差数据做整数离散余弦变换,去掉数据的相关性;
8、无损压缩,哈夫曼编码。CABAC也是给高频数据短码,给低频数据长码;

  • H.265

类H.264

音频

基础概念
  • 采样率

音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然;

  • 采样大小

每次采样的比特数,位深,也就是采样精度(8位,16位,24位);

  • 压缩率

每秒传送的比特(bit)数,又称数据信号速率;

  • 比特率

原始音频数据与通过压缩编码技术压缩后的数据大小的比率;

容器格式
  • WAV

在这里插入图片描述

  • MP3

音频数据帧每个帧都有一个帧头Header,长度是4Byte(32bit),帧头后面可能有两个字节的CRC 校验值,这两个字节的是否存在决定于Header 信息的第16bit,为0 则帧头后面无校验,为1 则有校验,校验值长度为2 个字节,紧跟在Header 后面,接着就是帧的实体数据了;在这里插入图片描述

  • AAC

AC的音频文件格式有ADIF & ADTS;
ADIF:这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。
ADTS:这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。
ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。

编码格式
  • PCM

主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。

直播技术

流媒体协议
  • RTMP

RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)
消息报文结构:
在这里插入图片描述
消息被分割成大小固定的消息块,结构如下:
在这里插入图片描述

  • RTP/RTSP

在这里插入图片描述

  • SIP

SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话;
使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了其他的目的,SIP允许创建基础的network hosts(叫做代理服务器),并且允许终端用户注册上去,发出会话邀请,或者发出其他请求。SIP是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。
SIP消息大多通过代理服务器转发.
在这里插入图片描述

播放器
  • 解封装

多媒体文件是一个将多种媒体封装在一起的复杂文件,在多媒体文件开始播放的时候,需要把图像、声音、字幕(可能不存在)等基本流分离出来,这个分离的行为和过程就是解封装(demux);

  • 拉流

video元素本身支持h264编码的mp4、vp8编码的webm、theora编码的ogg视频格式。浏览器内部处理拉流逻辑。
对于像flv格式的视频流数据,我们需要自行拉取数据;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lestly丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值