视频基础知识

1.视频比特率

        视频的比特率是指传输过程中单位时间传输的数据量。可以理解为视频的编码采样率。单位是kbps,即每秒千比特。视频比特率是决定视频清晰度的一个重要指标。比特率越高,视频越清晰,但数据量也会越大。比如一部100分钟的电影,如果比特率是700kbps,那么它的文件大小就是410MB。(100分钟=6000秒,然后将6000秒乘以700kb/s的比特率,得到的数据量为4200000kb,换算后约为410MB)当然,视频分辨率越高,要求的比特率就越高。因此,如果想提高视频的清晰度,需要在相同的分辨率下提高比特率。

        采样比特率有两种方式,一种是固定比特率cbr,即每秒采样的数据量是固定的;还有可变比特率vrb,根据每帧视频的复杂程度改变采样。如果视频中有很多快速移动的图片,会提高比特率,以获得更多的这部分图片的采样数据,这样图片会变得更清晰。当图片信息较少时,比特率会适当降低。所以这个编码效率比较高,同时兼顾了视频清晰度和文件大小。是目前主流的比特率采样方式。

例:一段1080P的视频长度为100分钟,大小为1GB,那么该视频的比特率是多少?

100min = 100*60s = 6000s;
1G = 1024M = 1024*1024KB = 1024*1024*1024Bit = 1024*1024*1024*8bit = 8589934592bit;

比特率 = 8589934592/6000s = 1431655b/s = 1.4Mbit/s;

        这个视频的码率大概为1.4Mbit/s, 一般主流视频平台的最高码率在1Mbit左右,比如直播网站斗鱼的高清选项实际播放的视频码率是900Kbit/s(0.9Mbit)。对于时间长度相同的视频,码率越大,视频的大小越大,视频的画质就越清晰(不考虑各种压缩算法的优劣),这是最直观的感觉。码率对于视频是非常重要的。

2.分辨率

        视频分辨率是横坐标上像素数乘以纵坐标上的像素数,可以简单理解为视频的大小。那么为什么分辨率可以决定视频的文件大小和清晰度呢?视频尺寸越大(这里指的是拍摄和录制的视频分辨率),它在画面中需要填充的像素就越多,所以数据量越大,输出的文件就越大,清晰度就越高。

        视频分辨率是指视频成像产品所成图像的大小或尺寸,它的表达式为:“水平像素数垂直像素数”。常见的图像分辨率有QCIF(176×144),CIF(352×288),D1(704×576),720P(1280×720), 1080P(19201080)。摄像机成像的最大分辨率是由CCD或CMOS感光器件决定的。现在有些摄像机支持修改分辨率,是通过摄像机自带软件裁剪原始图像生成的。

3.帧率

        帧率也是影响视频清晰度和大小的因素之一。它是视频中包含的帧数,帧率越高,视频越清晰(帧率达到一定值时影响越小)。当然相应的数据量也会更大。帧率、比特率和分辨率是相互关联的。在帧率和分辨率相同的情况下,比特率越大,视频越清晰,文件越大。在分辨率和比特率不变的情况下,帧率越高,视频会越清晰;但是,在帧率和比特率相同的情况下,分辨率越高,视频会越不清晰。这是因为当视频尺寸变大时,如果对应的编码样本保持不变,只相当于放大了视频。

4.DTSPTS

        DTS(Decoding Time Stamp) : 即解码时间戳,是解码器进行解码时相对于SCR(系统参考时间)的时间戳。它主要标识读入内存的bit流在什么时候开始送入解码器中进行解码。

        PTS(Presentation Time Stamp) : 即显示时间戳,是显示帧时相对于SCR的时间戳。它主要是度量解码后的视频什么时候被显示出来。

        DTS主要用于视频的解码,在解码阶段使用。PTS主要用于视频的同步和输出,在 display 的时候使用。在没有B帧的情况下,DTS和PTS的输出顺序是一样的。

5.音视频同步

        在媒体流中,除了视频以外,通常还包括音频。音频的播放也有 DTS、PTS 的概念,但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。

        音频视频混合在一起播放,就呈现了通常看到的广义的视频。在音视频一起播放的时候,需要面临怎么去同步它们,以免出现画不对声的情况。

        要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。时间戳就是PTS。可以选择同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。

6.视频格式和编码格式

        视频格式是一个容器,常见的格式包括百AVI、MPG、WMV、MKV、TS、TP、RMVB、MOV、MP4、3GP、等等。是视频文件的存在形式,也可以来说是封装压缩视频和音频文件的容器。

        编码格式是向这个容器放度入东西的问方法、(视频文件压缩过程中的运算方法)例如可以横放、竖放、侧放,等等。常答见的编码包括H.261、H.263、H.264、MPEG4、MPEG2、mpeg1、xvid、divx、VC-1、wmv1(9、realvideo8)10等等。

H264编码原理以及IBP

H264编码原理

        H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。对于一段变化不大图像画面,可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1/10或更小!B帧之后的C帧如果变化不大,可以继续以参考B的方式编码C帧,这样循环下去。这段图像称为一个序列(序列就是有相同特点的一段数据),当某个图像与之前的图像变化很大,无法参考前面的帧来生成,就结束上一个序列,开始下一段序列,也就是对这个图像生成一个完整帧A1,随后的图像就参考A1生成,只写入与A1的差别内容。

        在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。H264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法。

对序列的说明

        在H264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,以I帧开始,到下一个I帧结束。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这可获得重新同步机会。IDR图像之后的图像永远不会使用IDR之前图像的数据来解码。

        一个序列就是一段内容差异不太大的图像编码后生成的一串数据流。当运动变化比较少时,一个序列可以很长,因为运动变化少就代表图像画面的内容变动很小,所以就可以编一个I帧,然后一直P帧、B帧了。当运动变化多时,可能一个序列就比较短了,比如就包含一个I帧和3、4个P帧。

对三种帧的介绍

        帧内编码帧I帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成。I 帧通常是每个GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。

  • 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输
  • 解码时仅用I帧的数据就可重构完整图像
  • I帧描述了图像背景和运动主体的详情,不需要参考其他画面而生成
  • I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量)
  • I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧
  • I帧不需要考虑运动矢量,所占数据的信息量比较大

        前向预测编码帧P帧。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧。

  • P帧是I帧后面相隔1~2帧的编码帧
  • P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差)
  • 解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像
  • P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧
  • P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧
  • 由于P帧是参考帧,它可能造成解码错误的扩散,差值传送,P帧的压缩比较高

        双向预测内插编码帧B帧,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;

  • B帧是由前面的I或P帧和后面的P帧来进行预测的
  • B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量
  • B帧是双向预测编码帧,压缩比最高,只反映丙参考帧间运动主体的变化情况,预测比较准确
  • B帧不是参考帧,不会造成解码错误的扩散

        I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧。一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

H264的压缩方法

  1. 分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。
  2. 定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
  3. 预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
  4. 数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

7.视频质量评价指标

客观评价Objective

        客观评价是以标准的数学公式计算原视频与解码出的视频之间的差异,当今被广泛使用的评判标准是PSNR,其全称为(Peak Signal to Noise Ratio)原理是利用原视频与有损压缩后产生的损失之间的比例来判断的。公式为:

        其中,MAX为视频使用的信号的最大值,如视频是8比特的话,那MAX就为255。单位是分贝(db),MSE为均方误差(Mean Squared Error)即原始图像与解码后的重建图像之间的误差,误差越小,则表示还原后的质量越好,那PSNR就越大。PSNR的计算仅仅适用于有损压缩,对于无损压缩,因为MSE值将为0,则除式的值将为无穷大,所以对于无损压缩,PSNR是不适用的。

主观评价Subjective

        MOS测试,Mean Opinion Score Test,组织一定数量的人,尽可能地组织不同类型的人,尽量给实验制造随机性,多样性,使实验更具有一般性,可信性。

        进行客观性评价的时候,测试对象坐于显示器前,每位测试对象可以坐得有远近,方向角度有不同,尽量模仿实际生活中的人群,操作者在前方显示器上播放影像,当然,播放也是有规矩的。

        按时间顺序,一共分为两个阶段,一个是左边的前期测试阶段(没有任何标注),另一个是右边的投票阶段(标注有vote),其中,T1,T3时间段均是播放影像的时间,T2,T4均是休息的时候(显示器上显示灰色)。

        在测试中,一共有两种影像,一个是原始影像,没有失真的,一个是测试影像,带有失真的,上图中第一个T1和第二个T1播放同一种影像,第一个T3和第二个T3播放同一种影像,到底是原始影像还是测试影像,随机!测试者无法提前得知。等过完前面的前期测试阶段后,在Vote阶段,被测试者们就需要对影像进行打分了(即Vote),打分的图一般采用DSCQS方式评分图。

        上面就是DSCQS打分图,27,28,29,30,31是视频编号,这里可以对五组(原图+测试)视频进行打分,针对每一对,当进行到Vote阶段的时候,Vote阶段第一个T1过完,在A栏打分,Vote阶段T3过完,给B栏打分。

        打分栏分为五个级别,即Excellent非常好,Good好,Fair一般般,Poor差,Bad很差五个级别,打分的时候,在每个级别对应的区域划线或者打勾即可。实验完成后后由测试者收集进行统计作为主观评判结果。

        当然,主观性测试也是有它的缺点的,一来是要组织这么一群人,人工费少不了,二来,组织人来进行测试不能做到实时进行,只是用已经编码好的影像进行播放来进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S初级入门系列之五-Pod的高级特性

一、前言 前一篇我们了解了Pod的基本概念和操作,本篇我们继续研究Pod的一些高级特性,包括Pod的生命周期,pod探针,pod的调度等。 二、生命周期 1、Pod的生命周期 Pod的生命周期示意图如下: 挂起(Pending)&#xff0c…

【C进阶】指针进阶(1)_二次复习版

目录 1. 字符指针 1.1常量字符串的修改 加上const解决问题 打印常量字符串 1.2数组存放的字符串 1.3例题:数组创建与常量池的区别 2. 指针数组 2.1字符指针数组 2.2整型指针数组 2.3使用3个一维数组,模拟实现一个二维数组 2.4例题: 3.数组指针 3.1 数组指针的定义…

老年公寓人员定位管理系统:提升安全与关怀的智能解决方案

老年公寓作为提供安全居住环境和关怀服务的重要场所,面临着人员管理和安全控制的挑战。为了解决这些问题,老年公寓人员定位管理系统应运而生。基于为提供全面的安全管理和个性化关怀服务,华安联大便通过老年公寓人员定位管理系统的技术原理、…

数字孪生和 GIS 系统融合将为水利领域带来哪些变化?

随着科技的不断进步,数字孪生和 GIS 系统的融合应用逐渐成为了水利领域的新趋势。数字孪生是指通过数字化技术模拟物理实体和过程,将现实世界与虚拟世界相结合的技术,而 GIS 系统则是地理信息系统,用于收集、存储、管理和分析地理…

网工内推 | 售前、售后工程师,IE认证优先

01 广州佳杰科技有限公司 招聘岗位:IT售前工程师 职责描述: 1、负责所在区域 IT 产品的售前技术支持工作,包括客户交流、方案编写、配置报价、投标应标、测试、赋能等; 2、与厂商相关人员建立和保持良好的关系,相互配合,提高项目成功率和厂商满意度; 3、…

Python:使用openpyxl读取Excel文件转为json数据

文档 https://openpyxl.readthedocs.io/en/stable/https://pypi.org/project/openpyxl/ 安装 pip install openpyxl环境 $ python --version Python 3.7.0读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 # -*- coding: utf-8 -…

如何恢复损坏/删除的 Word 文件

有关如何修复不可读的 Microsoft Word 文件或 Rich Text 文件中的文本的分步说明。这些说明有助于从损坏的*.doc、*.docx、*.dot、*.dotx、*.rtf文件(任何版本和大小)中提取文本,只需单击几下: 从此处下载奇客数据恢复 &#xff…

如何在Linux系统中安装ActiveMQ

1、环境 ActiveMQ是一个纯Java程序,这里安装5.18.2版ActiveMQ,该版MQ运行在JDK 11环境内,为此需要先搭建JDK 11环境,这里安装JDK 15。 1.1、卸载 卸载开源JDK软件包,如下所示: [rootlocalhost ~]# rpm -…

如何将表格中的状态数据转换为Tag标签显示

考虑到系统前端页面的美观程度,通常通过Tag标签来代替某条数据中的状态信息。仅通过一点操作,便能够使得页面美观程度得到较大提升,前后对比如下所示。代码基于Vue以及Element-ui组件实现。 修改前: 修改后: 修改前…

1.Flink概述

1.1 技术架构 应用框架层: 在API层之上构建的满足特定应用场景的计算框架,总体上分为流计算和批处理两类应用框架。API 层: Flink对外提供能力的接口 ,实现了面向流计算的DataStream API和面向批处理的DataSet API。运行时层:Flin…

Visio文件编辑查看工具Visio Viewer for Mac

Visio Viewer for Mac可以打开和查看Visio文件(.vsd、.vdx和.vsdm文件)。它具有简单易用的用户界面,可以快速加载和显示Visio文件。此外,它还支持导出文件为PDF、PNG、JPEG等格式,方便用户进行文件转换和共享。 Visio…

《零基础入门学习Python》第053讲:论一只爬虫的自我修养

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 马上我们的教学就要进入最后一个章节,Pygame 嗨爆引爆全场,但由于发生了一个小插曲,所以这里决定追加一个章节,因为…

Qt Core学习日记——第四天QMetaEnum(下)

类定义&#xff1a; 成员变量就只有QMetaObject *mobj和uint handle&#xff0c;handle同样用于计算在qt_meta_stringdata_XTest的位置 成员函数&#xff1a; 接下以test类进行函数讲解 test.h #pragma once #include <qobject.h> #include <QFlags> class X…

有些能力,是工作中学不来的,看看这篇超过90%同行

俗话说:360行&#xff0c;行行转IT。 在就业形势压力巨大的今天&#xff0c;不仅仅是计算机专业的毕业生&#xff0c;很多其他专业的大学生都选择转行从事计算机行业。 尤其是软件测试行业&#xff0c;远远超出其他行业的薪水和广阔的就业前景&#xff0c;吸引了大批应届毕业…

QT DAY1

1.思维导体 2.作业 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug()<<this->size();qDebug()<<this->rect().size();qDebug()<<this->geometry().size();qDebug()<<this->frameGeometry().siz…

视频增强技术-对比度增强

在图像处理中&#xff0c;由于获取的图像质量不好&#xff0c;需要通过对比度增强来提升图片质量&#xff0c;主要解决的是由于图像灰度级范围较小造成的对比度较低的问题&#xff0c;作用是使图像的灰度级范围放大&#xff0c;从而让图像更加清晰。主要对比度增强方法包括线性…

macbook 软件iMovie for Mac(专业视频剪辑工具)中文版

iMovie mac中文版是一款针对Mac平台量身定做的视频编辑工具&#xff0c;软件凭借流线型设计和直观的编辑功能&#xff0c;可以让您感受前所未有的方式制作好莱坞风格的预告片和精美电影&#xff0c;并且还可以浏览视频资料库&#xff0c;快速共享挚爱瞬间&#xff0c;创建精美的…

DevOps自动化平台开发之 Shell脚本执行的封装

基础知识 基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue 1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成…

文件上传漏洞

什么是文件上传漏洞&#xff1f; 攻击者上传了一个可执行文件如木马&#xff0c;病毒&#xff0c;恶意脚本&#xff0c;WebShell等到服务器执行&#xff0c;并最终获得网站控制权限的高危漏洞。 webshell 非法用户可利用上传的恶意脚本文件控制整个网站&#xff0c;甚至控制服…

直线导轨的主要功能

直线导轨是一种常见的机械结构&#xff0c;用于工业机器人、数控机床和其他自动化装置中。它的作用是提供一个准确的直线运动轨道&#xff0c;使得设备能够在预定的路径上进行精确的移动。 直线导轨作为一种重要的机械基础件&#xff0c;在现代工业中得到了广泛的应用。它主要的…