当前位置:网站首页>码率vs.分辨率,哪一个更重要?
码率vs.分辨率,哪一个更重要?
2022-08-05 00:40:00 【LiveVideoStack_】
▲扫描图中二维码了解音视频技术大会更多信息▲
翻译、编辑:Alex
技术审校:章琦
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
Easy-Tech #037#
在本文中,我们将讨论OTT领域中视频压缩和处理的基本问题:码率vs.分辨率,哪一个对视频流更重要? 很多人都有此困惑,因为这两个因素会对编码器的输出产生深远影响。
你认为该如何选择?
选择1080p还是720p?
选择5mbps 还是3mbps?
如果你不知道该如何选择,那就太好了。这就是我写作本篇文章的目的:深入浅出地解释码率和分辨率的关系,并帮助你正确选择编码器设置。
让我们先从理解 码率(bitrate) 开始。
什么是视频码率?
视频码率或者码率是指视频信息每秒传输的比特数目。码率的单位通常为:
kbps或者千比特每秒
mbps或兆比特每秒
当你在压缩视频时,你通常需要设置视频压缩软件不要超过某个特定码率。
比如,如果你将视频压缩软件的码率设置为3mbps,软件就会将视频压缩为每秒3mb的数据(平均)传输给解码器或者播放器。这就是码率。
当你在讨论码率时,你实际上是在讨论:视频压缩的比率与视频质量损失的平衡。你压缩得越多,视频质量越低(也并不总是这样,我们将在下文讨论)。
压缩视频时,以下几种算法可以用于码率控制,它们是:
CBR(恒定码率,Constant Bitrate):宁愿视频质量有损失也要优先保持码率恒定。
VBR(可变码率,Variable Bitrate):保持恒定的视频质量, 允许码率波动。
Capped VBR(受限的VBR):尽可能保持恒定的视频质量, 允许码率在设定的范围内波动。
本文不会详细讨论上述码率控制方法,想深入了解的朋友,欢迎阅读:了解速率控制模式:什么是 CBR、VBR、CRF和Capped-CRF?
所以,当我们在讨论码率时,需要注意以下几点:
高码率视频的质量通常高于低码率视频。我说通常,是因为视频质量到达某一点将不再提升(无论你如何增加码率)。
码率是指比特(bit)而非字节(byte)。
仅码率并不能决定视频质量,你必须考虑到分辨率、帧率、显示尺寸等因素。
用于视频压缩的编解码器:H.264/AVC、HEVC、VP9、AV1?如果你更改视频编解码器及其设置(或编码工具),那么相同的码率将提供截然不同的视频质量。
码率如何影响视频质量?
为了理解码率如何影响视频质量,我们需要先理解视频压缩的工作原理。当你在压缩视频时,压缩算法做了两件事:
通过DCT(离散余弦变换,Discrete Cosine Transform),将视频从“像素域”转换为“频率域”。如果你不了解DCT,可以阅读我们之前的文章:如何给5岁孩子解释DCT?
通过一种被称为量化的技术舍弃一些频域信息,同时期望人眼无法感知这种信息损失。
本质上,当你压缩视频时,你正是在丢弃一些信息,同时却希望视频质量没有损失。当你过度压缩视频时,你会丢弃大量信息,这时人眼就能感知到编码损失。如果你没有过度压缩视频,那么文件会很大,同时视频质量会很棒。
这被称为视频压缩中的“率失真平衡(RDT,rate-distortion tradeoff)”,码率越小,视频质量越差(假设分辨率是固定的)。
RDT意味着什么?
让我们来看下面的例子。我们使用FFmpeg分别以1.5 mbps和5 mbps压缩示例视频(CrowdRun)。通过下面的视频截图,你能告诉我哪一个来自较高码率视频,哪一个来自较低码率视频吗?
记住,它们都是1080p。
1.5mbps
5 mbps
很明显,上图的码率较低,下图的码率较高。当我们使用5 [email protected]的码率时,视频质量很棒。同一个视频,当我们使用1.5 mbps的码率时,CrowdRun视频的质量变得非常差。
但总是这样吗?低码率总是会产生质量差的视频吗?我们通过一个简单试验来回答这个问题。
让我们使用动画视频验证“低码率=低质量”这个假设。接下来的视频,我们使用了很受欢迎的《辛普森一家》的预告片,并使用H.264/AVC(确保所有编码器配置保持一致)分别以2.5 mbps和1 mbps压缩视频。
让我们现在来看输出。
1 mbps
2.5mbps
你可以告诉我哪一个看上去质量更好吗?它们看起来差不多,对不对?为什么会这样?
和上一个使用CrowdRun视频的例子(其中码率发挥了很大作用)不同,我们发现,即使在动画视频中使用低码率我们也能得到不错的视频质量。
这是因为动画视频中的运动相当小,而且视频中的平滑区域非常容易压缩。编码器便可以非常高效地压缩动画片,并在低码率时达到很棒的质量。
所以,在压缩前了解你的视频内容非常重要。
提示: 你可以阅读这篇文章来了解更多视频压缩的知识:视频编码完全指南。
既然我们已经理解了什么是码率,接下来就让我们了解视频的**分辨率(resolution)**以及它对输出视频质量的影响。
什么是视频分辨率?
视频分辨率是指视频的宽度乘以高度,其中衡量分辨率的单位是像素。
视频分辨率通常以两种方式表示:
使用视频高度:如1080p或720p
或者使用视频宽乘高:如1920×1080或者1280×720
在下表中,我们列出了OTT视频流中常用的视频分辨率:
OTT视频流中常用的视频分辨率
视频分辨率在视频传输中非常重要,因为它影响着用户的观看体验。大部分视频播放器会根据观看窗口或者设备的屏幕分辨率自行调整。
如果你的用户观看的是48寸的电视,然后你发给他一个360p的视频,那么他的视频播放器就会上采样视频,以使视频适应电视的显示窗口。不过,如果你将视频分辨率从360p上升到1080p,那么视频质量也会变得很糟糕。
另一方面,如果你的用户使用的是智能手机,你发给他一个UHD视频,他很可能不会感谢你所提供的高质量,因为他的手机无法显示UHD分辨率。视频应用将更改分辨率以适应设备屏幕。在提供流畅观看体验方面,码率和分辨率发挥了重大作用,我们将在下文了解。
其次,当视频分辨率较低(如480p)时,如果你为编码器提供了比较大的码率预算(可能是5mbps),使用出色的视频编码器(如HEVC或AVC),选择编码器能处理的最复杂的设置,那么视频质量肯定会很棒!
你发现我们刚才做了什么吗?
我们没有说“使用高码率”或“使用高分辨率”!我们提到了一系列因素,并说明需要考虑到所有因素,才能帮助你获得高质量的视频!
码率和分辨率:哪个更重要?
我希望前面的介绍已经能够说服你二者都很重要——码率和分辨率对于实时视频流都很重要。
在压缩视频前,了解以下几件事对于你来说很重要:
首先,你需要了解你的观众(再怎么强调也不过分)。
你的观众平时常用的带宽是多少?你是为拥有高速互联网的城市居民提供视频服务,还是为低网速的乡村人口提供服务?
他们是使用固定连接的网线,还是使用移动互联网?
你的终端用户使用什么设备? 他们平时会看大屏幕的智能电视吗?还是使用智能手机看视频?
你所提供的视频服务的内容属性是什么? 是充满各种动作的电影、体育赛事,还是没有那么多动作的新闻,亦或是很容易压缩的动画片?了解你的内容。
你有多少时间压缩视频? 如果你分别花了15分钟和3小时来压缩3mbps的视频,那么很可能花费3小时压缩的视频质量更好,因为有更多时间来应用复杂的算法并提高视频质量。如果你的时间很少,你可能要考虑降低视频分辨率来快速压缩视频,并配置更合适的码率。
你使用哪种视频编解码器? 目标观众的设备能否解码H.264/AVC、 HEVC、AV1或者VP9?
询问和回答这些基本问题会帮助你确定你的码率和分辨率。
现在,让我们来看几个实际的例子,其中你需要选择码率-分辨率组合。
目标观众只在智能手机上观看视频。 这种情况,你应该考虑较低码率(也许一个1080p),并专注于创建更多分辨率为720p和码率在2~3mbp的组合。这样用户就能将码率降低到更适用移动环境以及数据连接较差的情况。
目标观众为城市居民,并只在智能电视或者Roku上观看视频。 在这种情况下,你可以轻松创建两到三个1080p的视频流:如1080p 8mbps、1080p 6mbps、1080p 4mbps,并根据用户的带宽选择合适的视频流,因为你几乎可以确定用户网络带宽良好,而且1080p在大电视上看起来会很不错。
新闻和脱口秀直播:全天候。 在这种情况下,编码器可以轻松且高效地压缩视频,所以你可以选择1080p和3~4mbps,并将获得非常高的视频质量。
因此,你应该做的第一件事就是深入理解你的目标观众以及他们的视频观看习惯。通过分析这些信息,你可以轻松地确定你需要用来压缩视频的不同码率和分辨率。
结语:码率vs.分辨率
现在,我们已经结束了对于码率、分辨率和它们二者哪一个对于视频压缩更重要的讨论。
我希望你可以理解它们的区别,以及你需要如何使用码率和分辨率(以及其他许多因素)来达到出色的视频质量。
我们下次再见,保重!Happy streaming!
致谢:
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/bitrate-vs-resolution-video-streaming-compression/
边栏推荐
猜你喜欢
典型相关分析CCA计算过程
刘润直播预告 | 顶级高手,如何创造财富
matlab 采用描点法进行数据模拟和仿真
进程间通信和线程间通信
gorm联表查询-实战
SV class virtual method of polymorphism
[FreeRTOS] FreeRTOS and stm32 built-in stack occupancy
redis可视化管理软件Redis Desktop Manager2022
[230] Execute command error after connecting to Redis MISCONF Redis is configured to save RDB snapshots
怎样进行在不改变主线程执行的时候,进行日志的记录
随机推荐
Flask框架 根据源码分析可扩展点
Helm Chart
Software testing interview questions: the difference and connection between black box testing, white box testing, and unit testing, integration testing, system testing, and acceptance testing?
Mysql_12 多表查询
软件测试面试题:做好测试计划的关键是什么?
软件测试面试题:系统测试的策略有?
matlab中rcosdesign函数升余弦滚降成型滤波器
"No title"
2022 Nioke Multi-School Training Session 2 J Question Link with Arithmetic Progression
Countdown to 1 day!From August 2nd to 4th, I will talk with you about open source and employment!
matlab 采用描点法进行数据模拟和仿真
Software testing interview questions: What are the three modules of LoadRunner?
could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
【idea】idea配置sql格式化
2022杭电多校第三场 L题 Two Permutations
oracle创建用户以后的权限问题
软件测试面试题:设计测试用例时应该考虑哪些方面,即不同的测试用例针对那些方面进行测试?
关于我仔细检查审核过关于工作人员页面,返回一个所属行业问题
日志(logging模块)
Theory of Software Fundamentals