|
质量、带宽和计算负荷相关 一
OBS是一个免费的开源网络“直播“软件,任何人都可以免费使用。这里对“直播”二字打引号,是因为该软件目前主要用于网络直播领域,但其实还有别的功能,比如视音频的录制、转文件封装等等。
在进行直播推流时,为了平衡我们电脑配置、网络带宽和视频主观质量三者之间的问题,我们要做的一件非常重要的事情是对相关的参数进行配置。
下面是一些主要参数的配置方法。
一.编码器:OBS-studio(24版本)->右下角设置->输出->串流中,将“输出模式”改为“高级”,既可以看到编码器、码率控制、比特率、CRF等等等参数,我依次做一个总结,如果有错误之处,望指正。
这里选择编不同的编码器时,所调用的编码芯片不同,在24版本中,支持以下几种编码器:
1.x264:即使用CPU进行h264编码,使用CPU编码俗称“软编码”。利用该编码器时,会占用大量CPU的计算能力,具体占用的CPU使用率与该编码器下的一些参数设置和CPU本身的计算能力有关,如果自身CPU比较弱的情况下,可以考虑不使用该方式。x264虽然会占用CPU的计算资源,但其优点是在相同的h264参数配置下,其编码后的视频质量是最佳的。
除了X264编码器之外,以下三种都是GPU编码。采用GPU编码时,要注意观察GPU的负载情况,对于win10系统,右键点击电脑任务栏调出“任务管理器”,选择性能选项卡,即可以看到GPU的占用率情况。
我们一定要保证GPU不要超负荷,否则会出现视频卡顿、不流畅甚至断流的情况。
2.NVENC H.264:即使用NVENC的GPU芯片进行h.264的编码,使用GPU进行编码俗称“硬件编码”。采用NVENC H.264编码的前提条件是电脑必须要安装有NV的显卡,且处于激活状态。因为对于有的电脑来说,虽然配有NV的独立显卡,但在主板Bios上没有激活该显卡,而是使用的集成显卡,因此在“编码器”中不会有“NVENC H.264”的选项。采用NV显卡编码时,编码的计算负载由NV显卡的GPU承担,从而大大降低了CPU的压力。NV显卡编码的缺陷是在相同的h.264编码参数设置下,其编码后视频的质量比x264要次,特别是在大量运动画面和转场画面的情况下,会更为明显。
如果是win7系统,可以在英伟达显卡安装目录C:\Program Files\NVIDIA Corporation\NVSMI里找到文件nvidia-smi.exe,在windows命令行里面执行即可,或者在英伟达的显卡控制面板里面查看。
3.QuickSync H.264:即采用英特尔的集成显卡进行H.264的“硬”编码。英特尔显卡编码出来的质量介于CPU编码和NVENC编码之间。
4.H264 Encoder(AMD Advanced Media Framework):采用AMD的显卡进行编码。在其余条件相同的情况下,根据第三方测试结果,在这4种编码中,AMD显卡编码后的视频质量是最低的。
采用不同的编码器时,我们能调整的参数是不尽相同的,我们接下来的介绍都以x264编码器来进行介绍。
二.码率控制:码率控制参数是采用H264编码时采用的控制码率的方法。采用不同码率控制方法,对处理器的运算负荷差别不大。
1.VBR(Variable Bit Rate):这是我们最为常见也是最为常用的码率控制方法,直接翻译就是动态码率,该算法的核心是目标是根据图像内容的复杂程度来分配不同的码率以确保画面的质量。在图像十分复杂,画面运动剧烈的情况下,其码率就会有大幅的提高,而在画面简单以及运动小或者几乎没有运动的情况下,码率会很低。当然这种码率的高度也不是天马行空的,而是围绕我们设定的目标码率(即下面说到的参数三)进行波动,只是该模式波动的幅度会比价到,甚至会达到50%+。比如对于目标码率为5Mbps时,对于会议画面,实际码率可能会低至几十Kb,而对于赛车比赛的画面,背景变化大、转场多的时候,码率可能会飙升至7Mbps+。由于VBR模式下,码率会围绕目标码率有较大的波动,因此在实际工作中采用该码率时,我们要申请足够高的运营商带宽,以确保峰值编码码率<运营商提供 的实际可用带宽,这个可用带宽以我们实际测试为准。
2.CBR(Constrained VariableBit Rate):即固定码率模式,这种码率控制模式我们也经常用到。这种模式是码率优先,质量第二。当然这里的固定码率也不是完全固定,只是相对于VBR来说,在目标码率附近的波动范围很小,一般不会超过15%。在实际工作中我们会发现,当我们设定的目标码率为5Mbps时,即使我们播放一帧静止画面,实际码率也会接近5Mbps。
为什么会有CBR这种方式呢?我想至少有一种情形是比较适合的,实际带宽比较低但很稳定的时候,比如我们申请的是10M运营商v*n专线,采用CBR又不能很好的预测实际编码峰值是多少时,就可以选择CBR模式,目标码率可以设置为7~8M。再比如另一种情形:我们申请了50M的带宽,因特殊情况其中40M必须保证另做它用,那么我们的直播流就必须要求所占带宽在10M之内,这种情况也可以使用码率相对比较恒定的CBR模式。
在相同目标码率的情况下,VBR和CBR哪种编码出来的质量更好呢?当然是VBR,这个也很容易理解,假设画面有剧烈的运动,场景变化快,CBR可能会因为目标码率的限制,不得不牺牲质量来换取码率的相对稳定,而VBR会增大码率以确保画面质量。
3.CRF:即固定质量模式,该模式下码率由CRF质量值来进行控制,如果没有目标码率,可以选择这种方式,它也是一种变码率模式,码率起伏会比较大,具体码率值也会因为其余参数设置的不同而呈现很大的差别,因此对编码知识储备不足的同学来说,要避免采用这种方式,因为其实际码率不好预估。CRF取值范围在1~51之间,H264编码的默认CRF值为23,取值越低,编码质量越好,同时对CPU或者GPU的压力就越大。
4.ABR(Average Bit Rate):即平均码率模式,该模式也是以质量为目标,和VBR相比,更加温和一点,实际码率波动不会那么大,但可能就会牺牲一点点的质量为代价,总体上可以看成是CBR和VBR权衡的结果。 |
主人,发帖子很辛苦,赏一个吧!
|