作者:从不咕咕的阿坤 更新日期:2022/6/27
一、编码器:
1、x264 【CPU】
使用CPU进行编码,占用CPU资源多,但编码出来视频质量更好。
2、intel Quick Sync 【英特尔集成显卡】
即采用英特尔的集成显卡进行H.264的“硬”编码。英特尔显卡编码出来的质量介于CPU编码和NVENC编码之间。
3、NVIDIA NVENC H.264(New)【英伟达显卡】
基于GPU编码,编码的计算负载由NV显卡的GPU承担,从而大大降低了CPU的压力。NV显卡编码的缺陷是在相同的h.264编码参数设置下,其编码后视频的质量比x264要次,特别是在大量运动画面和转场画面的情况下,会更为明显。
对于有的电脑来说,虽然配有NV的独立显卡,但在主板Bios上没有激活该显卡,而是使用的集成显卡,因此在“编码器”中不会有“NVENC H.264”的选项。
4、AMD (Advanced Media Framework)AMF/VCE 【AMD显卡】
采用AMD的显卡进行编码。在其余条件相同的情况下,根据第三方测试结果,在这4种编码中,AMD显卡编码后的视频质量是最低的。
5、其余不常用编码器 【AOM AV1 / SVT - AV1】等
AOM AV1 / SVT - AV1 预设 数字越大对性能的影响就越小,可以看到OBS这部分的作者在说明的时候调皮了一下。
如果 AMD 卡 NVIDIA 卡的编码器同时存在,优先推荐把不玩游戏那张卡拿来加速。
其次按推荐顺序是 NVIDIA卡,接着是 Inter 卡,然后是 AMD 卡,最后才是纯 CPU;
但在某些极端条件下:上传很慢(只有1到2Mb),但是 CPU 非常强的话,优先纯 CPU 来编码,因为 10Mb以内的这种低码率,相同画质纯CPU视频码率会远远小于显卡加速。
以上内容来源于下方OBS优化配置 整理。
二、码率控制器 比特率 == 码率
测速网站:https://www.speedtest.net/
测速网站:https://www.speedtest.cn/
网络测速转换:https://purecalculators.com/zh-CN/convert-kbps-to-mbps
码率越高,画质越清晰,对上传速度需求也就越大,相对,观众下载速度也要达标。
上传不达标,传不动,观众卡顿等你传完播放,上传达标,观众下载不达标,卡顿下载完播放。
CBR = 固定码率:根据设定的码率相对波动,波动幅度很小,码率优先,质量第二。
VBR = 动态码率:固定设定的码率上下波动,波动幅度较大,按照实时上传速度进行推流。
ABR = 平均码率:可以看成是权衡CBR和VBR的结果。
该模式也是以质量为目标,和VBR相比,更加温和一点,实际码率波动不会那么大,但可能就会牺牲一点点的质量为代价。
CQP = 恒定QP:瞬时码率会随场景复杂度波动。x264和x265中支持CQP模式,libvpx不支持。
H.264中QP范围是[0, 51]。QP值越大表示越大的量化步长,编码视频的质量越低。QP为0表示进行无损编码,意思就是,0~51,数字越大,画质越低,0就是无损原画质。
不推荐使用这个模式,除非你明确知道这个模式的原理而有特定的用途。
CRF = 固定质量模式:该模式下码率由CRF质量值来进行控制,CRF取值范围在1~51之间,H264编码的默认CRF值为23,取值越低,编码质量越好,同时对CPU或者GPU的压力就越大。
无损:电脑性能和网速强悍的上!
其他不做说明,因为不常用。
根据图像内容的复杂程度来分配不同的码率以确保画面的质量。在图像十分复杂,画面运动剧烈的情况下,其码率就会有大幅的提高,而在画面简单以及运动小或者几乎没有运动的情况下,码率会很低。
三、关键帧间隔
关键帧间隔越大,也就是GOP越长,数据压缩越大,实际码率就会越低。但GOP太大会导致画质变差,特别是在运动画面中最为明显。所以我们不建议GOP设置太长,以确保画面质量,默认情况下可以设置为0,即系统自动设定。如果自己设置,可以考虑在半秒到2秒之间。
四、CPU使用预设(Present)
分了10级,即从最下面的placebo到最上面的ultrafast。级别越靠上,CPU处理的数据量越小,编码时对CPU的处理能力要求越低,但画质会越来越差。该参数对CPU的影响非常大,即使是从faster到fast一个级别的变化,CPU的运行量可能就会翻倍。一般可以选择在fast~veryfast级别之间,平衡画质与CPU的负载。
视频编码器 x264 有许多“预设”,它们会相应地改变您的视频质量和 CPU 使用率。OBS 默认速度非常快,这在大多数情况下是 CPU 使用率和视频质量之间的最佳平衡。可以在设置 > 输出中更改此设置(如果您处于简单模式,请检查启用高级编码器设置)> 编码器预设。
预设的名称旨在指示编码器应该运行多“快”。更快的预设将以质量计算为代价使用更少的 CPU。较慢的预设将使用更多的计算来提高质量,但会使用更多的 CPU。
例如,如果您想在不修改分辨率或 FPS 的情况下尝试降低 CPU 使用率,您可以通过将 x264 预设更改为 superfast 或 ultrafast 来降低 CPU 使用率,x264 将花费更少的时间来尝试使图像看起来不错,并会为您节省一些 CPU 周期。图像可能看起来有点块状或像素化,但您将能够保留您的分辨率/fps。
使用此设置要非常小心,因为即使快一步或慢一步也会对 CPU 使用率产生巨大影响。例如,名为“faster”的预设可以使用两倍于“veryfast”的CPU,即正上方的那个。如果您不确定将其设置为什么,请始终将其设置回非常快。
五、配置(Profile)
定义了视频在进行H264编码时的视频信号抽样和视频压缩方式(算法)相关的一组参数值,或者说特性。H264一共定义了7个档次,我们OBS中只支持最常见的三种,从低到高依次为baseline、main和high。在码率等其余参数不变的情况下,三种档次从低到高压缩率逐渐提高,对CPU计算能力的要求也逐步提高,同时画面质量也会更好。
六、微调(Tune)
8种适应场景。
1.film:电影画质场景,主要用户画质较高、比特率较高的应用场合;
2.animation:适用于卡通场景,对平坦区域较大的图形画面有一定的优化;
3.grain:应用于颗粒化比较多的画面,编码后能够较好保持原画面的颗粒感;
4.stillimage:应用于静态画面场合。
5.psnr和ssim:psnr和ssim是2个视频质量的量化指标,用于客观判断编码后的数据值和编码器前数据值的差异,但比不能真正的反应质量是否有所有提升。
6.fastdecode:使编码后的数据在解码时,对解码器CPU和(或)GPU的要求不高,即低处理能力的解码器也能快速的进行解码。
7.zerolatency:实现快速编码,适用于延迟要求低的场合,但画质可能有一定的影响。
七、分辨率(resolution)
1.基础画布分辨率:这是指OBS预监和输出框的分辨率,我们建议该分辨率和输入视频的分辨率一致,在不一致时,需要进行手动拉伸,以恰好适应画布的大小。
2. 输出(缩放)分辨率:即编码后的输出分辨率,根据实际需要调整,默认情况下建议于原始视频一致。
输出分辨率的大小对CPU或者计算计算资源有较大的关联性,在码率等其余条件不变的情况下,分辨率越高,占用的计算资源会越高,对硬件的要求越高。
3.缩小方法:指原高高分辨率视频下变换成低分辨率视频时,所采用的计算方法,obs提高了4种算法,即双直线法、区域法、双立方法和lanczos法,这四种方法下变换后的视频质量依次提高,但更好计算资源,所幸的是,对计算资源的占用量也不会有多大的影响。
八、帧率(FPS)
即一秒钟内视频的帧数,帧数越高,画面的流畅感越强,临场感越强,对于运动剧烈的画面,建议使用高分帧率。
九、其他杂项说明
关键帧间隔:默认是0,从其他地方看到直播设置2,录像5
GPU:按照数字排序设置好你的GPU,使用任务管理器性能可以看到,但并不是绝对准确
录像:MKV [突然中断会保存]
前向考虑:启动动态B帧,但会增加GPU的使用率(内存)
心里视觉调整:启用编码器设置以优化比特率使用,但会增加GPU的使用率(内存)
个人理解:
性能不掉帧 -- 网速不卡顿 -- 画面质量更好
数据分析归纳部分来源地址:
[视频]【比木】OBS如何使用AV1编码|AOM-AV1和SVT-AV1编码
https://www.bilibili.com/video/BV1sP4y1P7wy
[视频] CPU预设:
https://www.bilibili.com/video/BV1kV411p7Ry
[视频] 双显卡设置:
https://www.bilibili.com/video/BV1PU4y1T7VQ
[视频] 关键帧、B帧等说明:
https://www.bilibili.com/read/cv9056690/
[主要文章] OBS配置项:编码器--软编--硬编+码率控制:
https://blog.csdn.net/smartgps2008/article/details/124501049
[文章] OBS直播优化配置:
https://blog.csdn.net/weixin_30883777/article/details/96363622
[文章] OBS推流编码器参数设置:
https://blog.csdn.net/zhulc2001/article/details/104906929/
[文章] OBS GITHUB:
https://github.com/obsproject/obs-studio/wiki/General-Performance-and-Encoding-Issues