您的位置 首页 知识

视频比特率是什么(视频的比特率、关键帧、FPS啥意思?)

视频比特率是什么
最近在尝试录视频,调参时遇到不少疑问,分享给大家。零、背景元旦那天,我在《观看得到与B站的跨年晚会》文章提到,B站的年会很精彩。
从看了B站元旦晚会之后,我就在琢磨着,通过录视频来分享数据结构算法与计算机技术。
后来也录了比赛视频,以及采集 LINUX CPU 的相关视频。
但是,录的视频有时候不清晰,有时候声音太小,有时候杂音太多。
我研究了一番,发现是参数配置的问题,涉及视频比特率、关键帧间隔、音频比特率、分辨率、FPS等。
如果不了解这些参数的含义,想调好参数自然很难。
所以我查阅了大量的资料,了解了一下这些参数都是什么含义,分享给大家。
一、帧 Frame人眼很奇怪,比如看一个快速画圆圈的燃烧的火把,会看到一个火组成的圆圈。
明明只有一个火把,我们却看到了一圈火把,这种现象称为视觉暂留。
科学研究发现,人眼看到的图像会在眼中保留1/24秒,当一秒看到的图像超过24张时,就可以看到动画的效果了。
这种科学现象也是我们能够制作视频的基础,播放器每秒播放的图像超过24张,看到的画面就是连续的了。
视频中的每一张图片我们就称为一帧。
二、帧率 FPS每张图片是一帧,图片的个数称为帧数,每秒图片的个数称为帧率,俗称 FPS。
公式:帧率=帧数/时间
帧率对于视频很重要,为了视频连贯,一般最低是 30。帧率越大,视频看起来越流畅,但是超过一个临界点后,人眼就区分不出差异了。
游戏玩家应该对这个很清楚,一般有一个FPS与体验感的关系。
30FPS 左右,勉强能玩60FPS 左右,普通90FPS 左右,优良120FPS 以上,非常良好
这样看来,我们录视频的时候,FPS 可以设置为 60 了。
为什么要设置为整数呢?而且是 30 的倍数, 后面会介绍原因。
三、关键帧之前提到,动画是连续的图片组成,而且每秒有几十上百张,假设是 60 张。那一个 60 秒的视频,就需要 3600 张图片组成,这样视频就会非常大了。所以需要想办法减少视频的大小。
程序员们很聪明,很快发现短时间内图片其实是相似的,完全可以只储存一张图片。周围的图片只储存差异值,播放的时候动态计算出图片即可。这个在计算机中称为增量储存。
那是不是我们可以只保留一张图片,后面的都通过差异来计算呢?可以是可以,但是这样播放体验就会特别差。
比如我们拖动进度条了,如果只有一张原始图片,那我们就需要把前面的图像全部下载下来才能计算出当前的图片。当然,场景切换时,相当于所有值都变化了,储存差异值成本更高,还不如重新储存一个关键帧。
另外,某些帧丢失或者有有损压缩后都会引起各种各样的问题。
所以实际应用的时候,对这些图片进行了分组。若干帧组成一组,一个组内保留一张图片。每一组称为一个 GOP, GOP 里保留的一张完整图片称为关键帧。
了解了关键帧,那关键帧间隔就容易理解了。大概含义就是多少帧遇到一张关键帧,也等价于 GOP 的大小。
一般,为了防止卡顿,GOP 的间隔建议为2秒,最长不超过4秒。
上面提到过 FPS,即每秒的帧数,我配置的是 60。两个通过相乘,可以得到 GOP大小,建议范围是 120 ~ 240。
当然,如果把 FPS 设置为 30 的话,GOP 就应该是 60 ~ 120。
现在我们需要配置 GOP 和 FPS, 还要把这个时间控制在 2~4 秒内,为了容易计算,我们一般都使用 30 的倍数。这样 GOP 的间隔 就比较精确了。
目前我的配置是 FPS 为 60, 2秒一个分组,即 GOP 大小为 120。
四、比特率视频比特率是每秒传输的比特数。
啥是比特?大家可以理解为视频的数据即可。
还有一个概念大家应该都知道:分辨率。
分辨率就是一张图片像素的大小,常见的有640 x 480、1280 x 720、1920 x 1080等。分辨率越大,一张图像需要的内存也越大。
而结合 FPS 每秒帧数,我们就能计算出视频平均每秒有多少比特了。
但是呢,通过分辨率、FPS两个指标来评估一个视频不好表示。
所以大家都是通过每秒的比特数来评估一个视频怎么样的,俗称码率。
细心的朋友可能已经在心里默默计算码率了。压缩前,一算,哇,好大。一秒的视频竟然需要几百兆比特,所以这里的码率控制至关重要了。
最简单的方法是调整 FPS,比如 60 调成 30, 码率一下减半,但是能操作的空间有限。
而比较高级的方法是调整压缩算法,比如数据抽样储存。这也是为什么看视频时,明明是1080P,也很流畅,但是画面就是不清晰。那都是压缩算法在控制。
五、最后好了,到现在为止比特率、关键帧、FPS我们就都知道了。
FPS:每秒帧数,用来控制视频的流畅程度,30和60都行。GOP:关键帧间隔,越小图片质量越高,一般在2~4秒。分辨率:图片的尺寸,当然选择 1080P的了。码率:FPS选择 30 的话,建议在 3000-6000之间,FPS是 60的话,建议在4500-9000之间。
-EOF-
题图:来源自《未来书剪》。
上篇文章:获取指定进程的CPU信息
推荐:观看《得到》与《B站》的跨年晚会
本文公众号:天空的代码世界
个人微信号:tiankonguse
微博:tiankongus
twitter:tiankonguse
B站:点击原文直达
微信群:微信拉你(算法闲聊群)
QQ算法群:165531769(比赛通知群)
知识星球:不止算法

版权声明