H264编码器参数理解 (部分)“I帧”和“帧间距”等的理解 ._i帧间隔是什么意思-程序员宅基地

http://blog.csdn.net/yx_l128125/article/details/7593470


一帧就是视频中的一个画面。
视频编码是按“组”进行的,每一组也叫一个GOP
GOP与GOP之间是没有联系的,编码关系只在GOP中间产生。
每一个GOP组都从一个关键帧开始。
关键帧是一辐完整的画面
GOP中间的那些帧都是不完整的,需要由关键帧、前面的帧或者也包括后面的帧一起,运算后得到。
对于普通视频文件,加大GOP长度有利于减小体积;从原理上可知,GOP长度也不能过大,太大则会导致GOP后部帧的画面失真。一般建议GOP长度在250帧以下为宜。

由于PAL制式每秒有25帧(N制为30帧),如果是用于实时视频,如电视、网上视频等,GOP长度应在15至25之间。这样可以在一秒内完成视频快进或回退。


写作背景:最近在研究H264编码器的参数,里面的参数不太懂,其中包括:

1)  30 # i intervals  // I 帧间距

2)30 # idr intervals// idr帧间距

3)   0 # b frame number between 2 p-frame(0, 1, 2)

4).  0 # min qp //最小量化步长
5).  51 # max qp//最大量化步长

6)  200000 # bps码率
7)  30 # framerate(rc only)//帧率

先对简单的进行解释:

2)idr帧间距

IDR帧是视频流的“分隔符”,所有帧都不可以使用越过关键帧的帧作为参考帧。IDR帧是I帧的一种,所以它们也不参照其它帧。这意味着它们可以作为视频的搜索(seek)点。
通过这个设置可以设置IDR帧的最大间隔帧数(亦称最大图像组长度)。较大的值将导致IDR帧减少(会用占用空间更少的P帧和B帧取代),也就同时减弱了参照帧选择的限制。较小的值导致减少搜索一个随机帧所需的平均时间。
建议:默认值(fps的10倍)对大多数视频都很好。如果在为蓝光、广播、直播流或者其它什么专业流编码,也许会需要更小的图像组长度(一般等于fps)。

3)b帧数

B帧数(Number of B-Frames):在IP帧之间可插入的B帧数量最大值,范围0~16,可以 

      #大大提高 压缩比,建议选择2

4)min qp 最小量化步长

说明:设置x264可以使用的最小量化器。量化参数越小,输出越接近输入。使用某些值时,x264的输出可以和输入看起来完全一样,虽然其实并不是精确相同的,通常就够了没有必要使用更多比特在宏块上了。
如果开启了自适应量化器(默认开启),则不鼓励提高qpmin的值,那样可能会降低帧的平坦部分的质量。


5)max qp最大量化步长

说明:qpmin的反面,设置x264可以使用的最大量化器。默认值51是H.264标准中的最大值,质量非常低。默认值51其实相当于没有设置qpmax。如果你想控制x264输出的最低品质,也许你想要把这个值调低一点(调到30-40最低了),但一般而言不推荐调节这个值。

6)码流(Data Rate)

是指视频文件在单位时间内使用的数据流量,也叫码率,是他是视频编码中画面质量控制中最重要的部分。同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。

7) 帧率

帧率是一秒播放的视频中有多少个帧。帧是组成视频的基本单位。视频文件本身是由很多连续的图片组成,简单的可以理解为帧率就是一秒内录下的图片数量(实际上这些图片通过压缩,一帧数据不一定保存的是一个完成图片

I帧

I帧(I frame) 又称为内部画面 (intra picture),I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。在MPEG编码的过程中,部分视频帧序列压缩成为I帧;部分压缩成P帧;还有部分压缩成B帧。I帧法是帧内压缩法,也称为“关键帧”压缩法。I帧法是基于离散余弦变换DCT(Discrete Cosine Transform)的压缩技术,这种算法与JPEG压缩算法类似。采用I帧压缩可达到1/6的压缩比而无明显的压缩痕迹。

  帧是组成视频图像的基本单位。关键帧也叫I帧,它是帧间压缩编码里的重要帧;它是一个全帧压缩的编码帧;解码时仅用I帧的数据就可重构完整图像;- D% j" B. F1 8 h3 z1 l) q& S% ]% l5 nI帧不需要参考其他画面而生成。视频文件是由多个连续的图片组成。

  在视频会议系统中,终端发送给MCU(或者MCU发送给终端)的图像,并不是每次都把完整的一幅幅图片发送到远端,而只是发送后一幅画面在前一幅画面基础上发生变化的部分。如果在网络状况不好的情况下,终端的接收远端或者发送给远程的画面就会有丢包而出现图像花屏、图像卡顿的现象,在这种情况下如果没有I帧机制来让远端重新发一幅新的完整的图像到本地(或者本地重新发一幅新的完整的图像给远端),终端的输出图像的花屏、卡顿现象会越来越严重,从而造成会议无法正常进行。

  在视频会议系统中I帧只会在会议限定的带宽内发生,不会超越会议带宽而生效。I帧机制不仅存在于MCU中,电视墙服务器、录播服务器中也存在。就是为了解决在网络状况不好的情况下,出现的丢包而造成的如图像花屏、卡顿,而影响会议会正常进行。

30帧发一个I帧, 所以I帧大一点

 

帧间距

以下来自博客:http://blog.csdn.net/oncoding/article/details/3344378

1.什么是 IFG?(What)

IFG(Interframe Gap),帧间距,以太网相邻两帧之间的时间断;以太网发送方式是一个帧一个帧发送的,帧与帧之间需要间隙,即帧间距IFG也可称其为IPG (Interpacket Gap)。IFG指的是一段时间,不是距离,单位通常用微秒(μs)或纳秒(ns)。如下图所示:

ifg

图 1 帧间距

2.为什么需要IFG?(Why)

网络设备和组件在接收一个帧之后,需要一段短暂的时间来恢复并为接收下一帧做准备。

3.IFG的大小为多少?(Importance)

IFG的最小值是 96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的:

不管 10M/100M/1000M的以太网,两帧之间最少要有96bit;IFGmin=96bit/speed   (s)

则:10Mmin:          9600 ns

      100Mmin:         960 ns

1000Mmin:        96 ns

4.如何使用IFG?(How)

举个具体例子说明,IFG在以太网的流控机制中解决速度匹配问题;

这里涉及到以太网的流控机制,如下图:

以太网传输示例

图 2以太网传输示例

 

1)     设备1以其自身的工作时钟(OSC1) 向设备2发送到待发数据;

2)     数据包进入设备2:

a)     经过时钟数据恢复器(CDR)的处理,从数据中提取时钟,并基于提取的时钟(CLK2),将数据包存入接收缓存,此时,CLK2和OSC1是同步的;

b)     数据从接收缓存,经过上层协议的处理,存入发送缓存;

3)     发送缓存以设备2的工作时钟(OSC2)发送数据,由于以太网是异步工作的,故OSC1和OSC2作为不同设备的本地时钟,并不能做到完全同频(以太网设备的工作时钟允许有正负50ppm的频差),上图假设OSC1大于OSC2,那么设备2的接收的速度将大于发送的速度,如果接收缓冲满了,将造成丢包;

如何解决上述丢包问题?

在设备2的发送侧通过减小IFG(帧间距)来加快其发送有效数据包的速度,从而使得发送速度能跟上接收速度。

5.IFG在我们实际工作的应用?

这里主要提到Smartbit 6000C 在产测中的使用。

使用原理:

IFG增大,设备的有效速度减小,可以解决因速度过快丢包的问题;

IFG减小(但必须大于 96 bit time),设备的有效速度增大,可以解决因速度过慢导致测试超时的问题。

参考资料:

[1] 以太网流控机制及其基于VSC7323的实现. http://tech.c114.net/169/a266942.html

[2] Interframe gap Wikipedia. http://en.wikipedia.org/wiki/Interframe_gap

[3] thernet .http://www.cisco.com/en/US/docs/internetworking/technology/handbook/Ethernet.pdf

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/redmoon729/article/details/38491681

智能推荐

STEM创新教育-数学活动设计-程序员宅基地

文章浏览阅读3k次。专注STEM教学资源,课件_stem创新教育

Trying simple merge with origin Simple merge did not work, trying automatic merge. ERROR: dist/index_merge with strategy ort failed.-程序员宅基地

文章浏览阅读1.6k次。合并代码时报(但dist整个文件夹是已经被忽略的,不管是本地还是远程都没有这个文件,依旧报dist/index的错误)Trying simple merge with originSimple merge did not work, trying automatic merge.ERROR: dist/index.html: Not handling case 8a5bac0b3e9b5a5a8520bb4f63c9b79f8d7f0ae4 -> -> bb2815ecc01340.._merge with strategy ort failed.

浅谈张量分解(二):张量分解的数学基础_hosvd推导-程序员宅基地

文章浏览阅读7.9k次,点赞17次,收藏105次。近年来,张量分解技术在数据挖掘领域得到了很好的应用,但关于张量的一些计算却与我们所熟悉的线性代数大相径庭,同时,张量计算相比以向量和矩阵计算为主导的线性代数更为抽象,这使得大量读者可能会觉得关于张量的内容很“难啃”。当然,就线性代数和多重线性代数而言,主流的观点将涉及到张量计算的内容归为“多重线性代数”(multilinear algebra,维基百科链接为:Multilinear algebra..._hosvd推导

[论文阅读 2020 ECCV 目标跟踪]TAO: A Large-Scale Benchmark for Tracking Any Object_tap-vid: a benchmark for tracking any point in a v-程序员宅基地

文章浏览阅读1k次。文章目录简介主要内容TAO数据集特征TAO数据集标签制作流程TAO数据集标签格式评测细节`Oracles`的设置`Init first`和`Init biggest`两种初始方式`TAO`评测流程`TAO`实验结果简介paper:TAO: A Large-Scale Benchmark for Tracking Any Objectcode:TAO-Dataset/tao这篇论文关注到了跟踪数据集普遍存在的一个问题就是:现有的跟踪数据集中的跟踪对象普遍是person和vehicle(如下图所示,作者_tap-vid: a benchmark for tracking any point in a video

创业之---产品成长策略_增一些好友 將此人新增到您的好友名單,然後邀-程序员宅基地

文章浏览阅读2.1w次。這47個成長策略,Netflix、Facebook、YouTube都在用目前,一家新創公司要想成長,其挑戰無疑越來越綜合而多元——對於新創公司來說,成長非常重要,但在流量紅利已不明顯的今天,對於每一個創業者來說,找到可執行的、有效的成長途徑非常重要。這就是我們今天要分享的成長駭客策略。究竟什麼是成長駭客?今天我們選擇分享 47 個案例 ——在我們開始閱讀這些成長駭客策略之前,先來做一個假設..._增一些好友 將此人新增到您的好友名單,然後邀

el-table里嵌套el-input计数器,勾选哪一行就禁用哪一行的计数器-程序员宅基地

文章浏览阅读442次,点赞2次,收藏2次。el-table有一个select事件,@select=”select“这个事件的返回值有两个: selection和row方法:select(selection, row){} //selection:所选中的那一行或几行数据,且放在了一个数组里(返回的是一个数组) //row: 所选中的那一行或几行数据(不会放在数组里)根据selection中是否存在row这个数据,来判断是否该禁用select (selection, row) { let selecte

随便推点

Pattern Recognition Review Papers-程序员宅基地

文章浏览阅读1k次。Pattern Recognition Review PapersThe lists below are undoubtedly incomplete. Suggestions for additions or replacements are welcome. Statistical pattern recognition, neural networks and learni

井径测井原理、计算方法、主要应用、仪器刻度、质量控制_多臂井径仪工作原理-程序员宅基地

文章浏览阅读7.6k次。1、井径测井原理1.1测量原理实际井径往往和钻头直径不同,利用井径仪来测量井眼直径的变化。井径仪的结构主要有两种:一种是进行单独井径测量的张臂式井径仪;另一种就是利用某些测井仪器的推靠臂(如密度仪、井壁中子测井仪、微侧向仪等),在这些仪器测井的同时测量。不论哪种井径仪,它们的测量原理基本相同,而且比较简单。以张臂式井径仪为例,如图1.1所示,它的井径臂(也叫井径腿)在弹簧力的作用下_多臂井径仪工作原理

盘点那些初级软件测试面试题汇总_请描述如何划分缺陷与错误严重性和优先级别-程序员宅基地

文章浏览阅读512次。一、请描述如何划分缺陷与错误严重性和优先级别?给软件缺陷与错误划分严重性和优先级的通用原则:(1)表示软件缺陷所造成的危害和恶劣程度。(2)优先级表示修复缺陷的重要程度和次序。严重性:(1)严重:系统崩溃、数据丢失、数据毁坏(2)较严重:操作性错误、结果错误、遗漏功能(3)一般:小问题、错别字、UI布局、罕见故障(4)建议:不影响使用的瑕疵或更好的实现。优先级:(1)最高优先级:立即修复,停止进一步测试。(2)次高优先级:在产品发布之前必须修复。(3)中等优先级:如果时间允许应该.._请描述如何划分缺陷与错误严重性和优先级别

JLINK详解-程序员宅基地

文章浏览阅读4.4k次。JLINK详解_jlink

stm32驱动sh36730x的驱动代码_sh367303温度检测的寄存器地址-程序员宅基地

文章浏览阅读2.8k次,点赞13次,收藏16次。stm32驱动sh36730x的驱动,自己写,已经通过实际测试!!!_sh367303温度检测的寄存器地址

最新JAVA数据结构算法视频教程全套20课_java 算法与数据结构课程 百度网盘-程序员宅基地

文章浏览阅读2.1k次。课程目录:第一讲数组第二讲简单排序第三讲栈和队列第四讲链表第五讲双端链表和双向链表第六讲递归的应用第七讲递归的高级应用第八讲希尔排序第九讲快速排序第十讲二叉树的基本概念........19第十九讲:图的搜索第二十讲:图的最小生成树 下载地址:百度网盘..._java 算法与数据结构课程 百度网盘