帧率:帧率也叫帧频率,帧率是视频文件中每一秒的帧数,肉眼想看到连续移动图像至少需要15帧。

**码率:**比特率(也叫码率,数据率)是一个确定整体视频/音频质量的参数,秒为单位处理的位数,码率和视频质量成正比,在视频文件中中比特率用bps来表达。
**编解码器(**Codec):以帧为单位实现压缩数据和原始数据之间的相互转换的。

1.DSP芯片视频编码器工作流程:

封装格式(也叫容器):视频文件格式mp4,视频封装格式MPEG(Moving Picture Experts Group)。

视频编码方式:(将视频像素数据(RGB,YUV等)压缩成视频码流,从而降低视频的数据量):H.264。

宏块: 一个视频会有很多帧,每一帧就是一个画面,每一个画面都可以划分成很多宏块,每一个格子就是一个宏块。宏块大的个数越多,视频压缩比越高。16 * 16一般来说是最大的宏块。

2.H264压缩技术主要采用了以下几种方法对视频数据进行压缩:
(1) 帧内编码
I帧因为不参考其他帧,所以是帧内编码。由当前帧中,已编码的部分来推测当前待编码的这一部分数据是什么,这里的推测模式也有好几种方法(如下),简称帧内预测。
模式0(垂直) 由A、B、C、D 垂直推出相应像素值
模式1(水平) 由I、J、K、L 水平推出相应像素值
模式2(DC) 由A~D 及I~L 平均值推出所有像素值
模式3(下左对角线) 由45°方向像素内插得出相应像素值
模式4(下右对角线) 由45°方向像素内插得出相应像素值
模式5(右垂直) 由26.6°方向像素值内插得出相应像素值
模式6(下水平) 由26.6°方向像素值内插得出相应像素值
模式7(左垂直) 由26.6° 方向像素值内插得出相应像素值
模式8(上水平) 由26.6° 方向像素值内插得出相应像素值
(2) 帧间编码
P帧,要前向参考,而B帧,则要进行双向参考,这两种,都属于帧间编码
运动补偿预测编码技术
(运动估计与补偿),解决的是时域数据冗余问题
由这一帧的前(或后)一帧(或几帧)来推测当前待压缩的这一部分数据是什么。意思就是一个视频序列中连续的两帧,视屏中肯定大部分的宏块位置都相对固定,只有小部分的宏块会发生位移,前后两帧的差别很小,这时用帧间压缩的效果会比帧内压缩的效果好,即寻找前面的几帧里和当前宏块最相似的(这个过程叫运动搜索/运动估计),不需要重新编码,然后计算前宏块和寻找到的前几帧最相似宏块的差值就行了(简称残差),这样就只要编码残差就行了

3.H264关键词
帧类型nalType:
UNDEFINED(0),
NON_IDR_UNUSE_DATA_SEGMENT(1),
NON_IDR_DATA_SEGMENT_A(2),
NON_IDR_DATA_SEGMENT_B(3),
NON_IDR_DATA_SEGMENT_C(4),
IDR(5),
SEI(6),
SPS(7),
PPS(8),
DELIMITER(9),
SEQUENCE_END_MARK(10), STREAM_END_MARK(11), FILL_DATA(12), SPS_EXT(13), PREFIX_NAL(14), SUB_SPS(15),
UNUSE_DATA_ASSIST_CODE_PIC_SEGMENT(19), STAPA(24), STAPB(25), MTAP16(26), MTAP24(27), FUA(28), FUB(29);
0 没有定义
1-23 NAL单元 单个 NAL 单元包
24 STAP-A 单一时间的组合包
25 STAP-B 单一时间的组合包
26 MTAP16 多个时间的组合包
27 MTAP24 多个时间的组合包
28 FU-A 分片的单元
29 FU-B 分片的单元
30-31 没有定义

CSD: Codec-Specific Data,Codec特定数据,是一坨原始数据,包含诸如 Sequence Parameter Set 和Picture Parameter Set之类的数据。它是由MediaCodec编码器生成,并且MediaCodec解码器在解码时一定需要的数据。从编码器读数据时BUFFER_FLAG_CODEC_CONFIG就标志着CSD data的到来。在解码时必须要把此数据首先传给解码器,它会做一些初始配置工作。

SPS:Sequence Parameter Set 序列参数集,H.264码流第一个 NALU
PPS:Picture Parameter Set图像参数集,H.264码流第二个 NALU

IDR帧:IDR帧属于I 帧。解码器收到IDR frame时,将所有的参考帧队列丢弃 ,这点是所有I 帧共有的特性,但是收到IDR帧时,解码器另外需要做的工作就是:把所有的PPS和SPS参数进行更新。由此可见,在编码器端,每发一个 IDR,就相应地发一个 PPS&SPS_nal_unit

I帧:关键帧,采用帧内压缩技术。主要存储编码数据(top(上边界)+left(左边界)数据)+预测方向。帧内编码帧是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一个帧始终都是I帧。
  P帧:向前参考帧,在压缩时,只参考前面已经处理的帧。采用帧间压缩技术。主要存储运动矢量+差异数据
  B帧:双向参考帧,在压缩时,它即参考前而的帧,又参考它后面的帧。采用帧间压缩技术,主要存储运动矢量

图像序列GOP:两个I帧之间是一个图像序列,在一个图像序列中只有一个I帧。GOP越长越好,这样I帧个数少,所以占用空间小。短视频,没有及时性的要求,一般GOP序列较长。直播,GOP较短,因为直播讲究及时性,秒开,所以I帧多,用户可以在短时间内收到关键I帧,更早的看到画面(但是这样会导致I帧过多,视频文件大,可以通过减少帧率来,每秒绘制的画面个数减少I帧的数量)。一般来说gop>200,已经算久的时间序列了。

H264编码分层:

NAL层: (Network Abstraction Layer,视频数据网络抽象层)
在传输的过程每个包以太网是1500字节. 而H264的帧往往会大于1500字节的.所以就要进行拆包. 将一个帧拆成多个包进行传输。所有的拆包或者组包都是通过NAL层去处理的。NALU主体里存放的数据类型根据NALU头里存放的type来定义的。列如type为5的时候,NALU主体里是一个slice数组,多个slice组成一帧图像。NAL Unit: NALU 头+NALU数据。NALU 主体,是由切片组成.切片包括切片头+切片数据。

VCL层:(Video Coding Layer,视频数据编码层):对视频原始数据进行压缩.

YUV:YUV颜色编码采用的是明亮度和色度来指定像素的颜色。其中,Y表示明亮度(LUminance、Luma),而U和V表示色度(Chrominance、Chroma)。而色度又定义了颜色的两个方面:色调和饱和度。YUV的采样有许多种,常用的有444,422,420,411,YUV的出现就是为了减少传输的数据量带宽的。

视频的第一帧一定是I帧,接下来与I帧相似程度极高 达到95%以上 编码成B帧,相似程度70%编码成P帧。首先输出I帧,当画面差异程度小于%5 时生成B帧,但是他不是马上输出,会暂时在传输缓冲器里等待,等到画面差异程度大于30%时,会生成P帧,这时会通知传输缓冲器里的缓存的B帧一起输出(I P B B …).

这里是引用
https://blog.csdn.net/sunlifeall/article/details/117927614?spm=1001.2014.3001.5502
https://blog.csdn.net/rikeyone/article/details/50600137
https://zhuanlan.zhihu.com/p/97353583

视频-视频基础(H264)相关推荐

  1. Android音视频视频基础(H264)二 SPS分析

    学习目标: SPS分析与读取 图中的标识为哥伦布编码的,均需要通过哥伦布编码解析实际值. 学习内容: 首先肯定得截个sps数据的图来看分析了. 上图红框内就是sps数据了.67是sps标识,不清楚的小 ...

  2. Android音视频视频基础(H264)

    学习目标: Android音视频 H265和H264官方文档下载 视频分析软件,记得下载,下文分析的视频软件就靠它了 码流查看器 ffmpeg 提取视频命令:ffmpeg.exe -i input1. ...

  3. Android视频开发基础

    Android视频开发基础 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/6205 ...

  4. 音视频开发(19)---Android视频开发基础(一)

    Android视频开发基础(一) 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/6 ...

  5. 音视频学习之 - H264解码

    解码流程 解析数据 (SPS PPS NALU Unit) 初始化解码器 将解析后的H264 NALU Unit输入到解码器 解码完成后回调,输出解码数据 解码数据显示(OpenGL ES) 解析数据 ...

  6. 音频编码和视频编码基础

    音频编码和视频编码基础 1 音频数字化 1.1 PCM 1.2 音频编码方式 2 视频数字化 2.1 RGB/YUV 2.2 视频编码方式 2.3 编码中的重要概念 1 音频数字化 1.1 PCM 音 ...

  7. 视频格式基础知识:让你了解MKV、MP4、H.265、码率、色深等

    本教程将分以下模块详细叙述: 1.封装格式(MP4/MKV-)  vs 媒体格式(H.264/FLAC/AAC-) 2.视频的基础参数:分辨率,帧率和码率 3.图像的表示方法:RGB模型 vs YUV ...

  8. 视频格式基础知识:让你了解MKV、MP4、H.265、码率、色深等等.

    http://www.4k123.com/thread-8194-1-1.html 本教程意在讲述一些视频音频的基础知识和术语.它可以比较详细的回答以下常见的问题: . MP4/MKV这些格式有什么区 ...

  9. 【音视频处理】H264/H265详解,为什么H264更常用?

    大家好,欢迎来到停止重构的频道. 本期我们介绍视频编码格式H264. H264是视频画面最常用的编码格式了,几乎所有的播放器都支持这个编码格式,当然浏览器也不例外. 我们按这样的顺序讨论H264 : ...

  10. 视频格式基础知识 让你了解MKV MP4 H 265 码率\码流 多码流等等

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51784440   文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一 ...

最新文章

  1. 人工智能70年:科幻和现实的交融
  2. 将十六进制的字符串转换成整数
  3. queue的常见用法详解
  4. 笔记-高项案例题-2019年下-质量管理-帕累托分析
  5. 计算机科学速成视频35,计算机科学速成课30:万维网【视频】
  6. 为SAP UI5正名 - 它也支持双向绑定
  7. 草稿 断开式绑定combobox 1128
  8. 19_01访问权限修饰符
  9. 北工商计算机考研难吗,北京工商大学考研难吗?一般要什么水平才可以进入?...
  10. 我的RHCE考试终于要开始了!
  11. 【Java面试题】40 你所知道的集合类都有哪些?主要方法?
  12. 图神经网络(GCN)
  13. java html转word的坑 poi样式丢失还乱码
  14. php时间戳转换英文格式日期_php中时间戳和日期格式的转换
  15. ac算法 java_Aho-Corasick算法的Java实现与分析
  16. 2015年8月18日工作日志--------赵鑫
  17. 动态规划——Weighted Interval Scheduling
  18. SCIgen - An Automatic CS Paper Generator
  19. adcclk最大_关于STM32 在进行ADC采样时,ADCCLK时钟频率的确定
  20. 慕课《如何写好科研论文》Quiz汇总

热门文章

  1. 【英语学习】十二星座Zodiac Signs的词源/词根/示例
  2. 在html中怎么写背景色渐变,CSS 实现背景色渐变和文字颜色渐变(示例代码)
  3. 中国网爪(china claw) 最终测试版 绿色软件联盟
  4. 国企社招很少计算机岗位,为什么国企几乎都是校招,很少有社招呢?
  5. 【SCF CLI实践】腾讯云serverless + 企业微信群机器人,轻松解决告警通知问题
  6. 西北乱跑娃 --- python爬虫
  7. 女士细线毛衣起多少针_手工编织毛衣各处针数和方法
  8. java孤岛求生类游戏下载,我的世界荒岛余生整合包
  9. 【Tracker】KCF跟踪方法百度翻译
  10. 每日一题python90:找到小镇的法官