源码地址:https://github.com/Tinywan/PHP_Experience
很多主播问过OBS的参数到底什么影响画质,到底什么影响流畅度,那么本篇教程尽量用通俗的语言解释下一些重要参数到底是干什么的,自己一定要理解为主,每个主播的电脑、所在的平台、当天的网络状态(注意网络就和马路一样,每天的情况都是不一样的)、平台的当天的状态、不同的游戏不一样,合适的参数都不一样。不要羡慕大主播高清流畅的画质,他们也是自己耐心(或者背后有技术团队)调整出来的。
码率
码率在OBS中叫最大比特率
为什么叫最大比特率不叫比特率?
比如你现在采集了5000码率的东西,但是画面变化不大,上一个画面和现在的画面可能仅仅改变了500码率的部分,那么OBS就会优化,只传输500码率就行了(测试【1】幻灯片),观众看起来却得到了5000码率的画面,可是观众只用了很少的下载速度,你也用了很少的上传速度。所以经常有主播问,为什么我设置了很高的码率,右下角的数字在变,还很小?是不是出错了?看到这里应该明白了,没有出错,反而是正确的,那里显示的是优化后实际传输的数字。
但是如果画面变化的很剧烈(比如效果特别强的电影,测试【2】所示),比如守望先锋跑动起来,那么就无法这样优化了,就必须用足够的码率来上传,那么问题来了,每个主播的上传带宽是有限的,平台能接收的带宽也是有限的(并不是你上传速度快就能肆无忌惮的提高码率,平台还有接收能力,speedtest那里测试的只是你的能力,你还要考虑平台的能力)。这就要限制上传速度了,否则传给平台的速度不够(注意我没说你上传速度不够)就会丢帧。丢帧就是obs右下角的这样的
下面我们来做一个测试
例如:我们设置最大比特率为:8000kbps(视频采集码率为8000)
【1】播放一个幻灯片测试最大比特率为:390kb/s~980kb/s之间波顿:
【2】播放一个3D高清电影,测试最大比特率为:2440kb/s~6880kb/s之间波顿:
一般偶然有几个丢帧没事,一直在增加必须改进,否则观众会卡。为了解决这个问题,obs中就需要设置最大比特率,就是俗称的码率。当你采集的画面超过这个数值时,obs就会丢弃多余的和进行优化,保持这个速度上传。如果丢的过多优化的过多,观众看起来就会形成马赛克。 这里并不是丢帧,而是为了保持码率而进行的优化。
很多主播问,这个码率到底填多少?
首先,这个最大值不能超过你的上传最大能力,就是在一般测速网站或者用专业测试工具测试出来的速度,比如 5M,那么就是5000,2M就是2000,但是你还得留点带宽给自己和软件用吧,5000能有个4500就不错了,2000能有1500就不错了。
其次,你得考虑观众的网速,通常而言,手机用户(别以为都是wifi,我以前也这样认为,后来看了调查才知道)200k左右的下载速度就差不多了,200k乘以8就是码率,大概是1500左右的码率,这也是大多数平台,默认推荐的码率值。
最后,如果你不是直播,是录制视频,机器能带动的情况下,可以写很大,比如8000,1000。切记,直播不行,观众会卡的。
CBR
很多人会问这个CBR勾不勾?
80%的主播别勾!一旦勾上,OBS就会放弃帮你优化传输了,就是说每秒都要传输足够多的码率来直播(其实根本没有必要,你会损失很多网速不好的观众或者损失平台带宽不足的省份的观众,观众会喊卡)那么什么情况要勾?给几百上千个主播调试后发现,只有码率不高,比如3500以下,平台带宽充足,而怎么设置也设置(怎么设置下面都在说)不出清晰的效果(尤其是跑动的动态画面会有马赛克),那么就勾上有奇效。
品质
在去掉CBR的勾后(勾上没这个品质的概念),直播软件需要计算,如何优化这个画面,以确保更少的传输内容却保证高质量的画面。而这个是需要计算量的,品质就决定了这个,品质越高,计算量越大(越耗CPU)。那如何使用合适的品质哩?
最靠谱的方法是,你打开游戏开始运行,然后把品质调到10,游戏尽量用动态的画面而不是静止不动(为了方便观察,可以用录制视频的方法比较)。再把品质调到8。看看这两个视频肉眼看有区别吗,如果没有区别,你说哩?自然是机器好的保持10,机器不好的保持8(反正肉眼看不出差别)。同样原理,测试品质7,6,5,4等等。有的教程会给大家推荐一些类型游戏采用什么品质,出发点是好的,但是太笼统,尽量不要照本宣科,多动手,找到最适合自己的参数。
分辨率
然后,很重要的来了,码率是要看分辨率的,分辨率越高,消耗的码率就越大。注意这里的分辨率不是游戏也不是你电脑桌面的分辨率,是obs输出的视频分辨率。通常在这里
很多主播用默认的高分辨率显示器直播,有3000以上的分辨率,要知道直播不是看电影,这么高你得消耗多少码率,想想就知道要马赛克),通常而言(注意啊!这里不是叫你一定啊,所有的数值你一定要自己对比测试,如果肉眼看起来一样,尽可能低的参数能适合更多的观众),通过压缩分辨率压缩到1280X720比较合适。
压缩分辨率
而且压缩分辨率还有个好处,就是节省CPU。有人会问,分辨率压缩了不是还要耗CPU吗,怎么反而会节省。自己动手实验先看结论 看看压缩后的cpu使用和压缩前谁高(看本教程,尽量要边动手实验边看)然后告诉你大概的原因,这是因为,OBS大部分CPU消耗在制作视频上,而不是采集上,而压缩视频是把图片压缩成视频,越小的图片制作视频负担越小。所以先压缩,再制作视频,最后的cpu反而降低了。当然,如果你能直接降低分辨率,那是最好的,节省了压缩的部分cpu,但是很多主播不习惯改变分辨率游戏,所以只好压缩分辨率了。
有人问,压缩分辨率到底是提升画质还是降低画质?
正确的回答应该是 : 码率足够时,会降低画质,码率不够时,反而会提高画质。(因为降低了码率使用,不会被强制马赛克)使用压缩分辨率时,经常有主播问,滤镜用最快还是最好。
最快,使用的CPU最少,但是画质最差(其实已经很好了,只是相比其他两个差点)。
最好,使用的CPU最多,但是画质最好。那么,就要看你使用压缩分辨率的初衷了,如果你机器很好,是为了减少马赛克,那么用最好。如果你是机器带不动了,obs开始报警了(左下角报警cpu使用过高)那么肯定用最快咯。
此外,如果不用压缩分辨率,是比最好还要好的,但是分辨率比较高尽量压缩下,你要考虑观众的流畅。
做直播,首先要让观众看的流畅,卡了谁看你,然后才是清晰,马赛克很难受。但是如果马赛克和卡顿这两个比较,当然选流畅,情愿马赛克。本教程的目的是尽可能教会你即流畅又不马赛克,在机器配置和网络质量都达标是可以做到的。
那么码率到底用多少?这个问题最后再说,因为这里和其他参数息息相关。
FPS
好了,继续下个参数FPS。这里的FPS是视频FPS,
不是游戏的FPS。不同的CPU和显卡、游戏,合适的值都不一样,通常情况下,一般25和30就足够了(比如LOL)。我们专门测试过,甚至少机器,20,30,60直播守望这种动作游戏都没区别。
当然,我们主要考虑大多数情况,一般的游戏25,30就行了,而大型动作游戏比如守望,主机游戏,大概有50%主播需要60,才能行云流水。而剩下40%左右,依旧30就行了。这里说明你一定要自己动手实验!如果你用30的肉眼感觉和60一样,那么自然30了,节省自己的CPU节省码率节省观众网速。
但是,大概有5%的主播,系统和驱动有问题,这里甚至会影响到游戏FPS,那这里被迫就要提高到60。那么是不是我干脆就写60好了,不行,这里也影响码率,码率是表示一秒钟视频的大小,如果你一秒钟有30张图片,那么大小自然比一秒钟60张图片小,这里的图片个数就是FPS。如果码率不够,就变成马赛克了,上面部分详细说了,你理解了就会明白。到底能不能用60?
实战经验:
问:画面卡顿的原因是什么情况?
答:推流的Fps和播放的Fps不一样的,列如:推流fps=30 转码(拉流)fps=25 不一样的话就会出现画面卡顿现象。
来源
下面介绍下用什么来源直播。首先尽可能别用显示器获取,不是配置的问题,而是原理的问题,这种方式极其耗资源(很多i7也带不动,视频fps会被严重拖累),(少部分机器经过试验不耗,可以用,自己要动手)。其次能用游戏源尽量用游戏源,腾讯和部分单机游戏要勾上反作弊兼容,暴雪游戏一般不需要。最后,如果不支持游戏源,那么就用窗口获取。
简单来言,腾讯大部分游戏和暴雪所有游戏,都用游戏源即可。注意有些游戏比如LOL是有大厅和游戏本身两个程序的,所以需要添加两个。腾讯游戏还要勾上反作弊兼容。而单机游戏,steam上的,也大多数是游戏源。少部分游戏特别老或者反作弊系统干扰游戏源或者特别新是DirectX12的,那么就只有把游戏改成无边框窗口化,再用窗口获取,如果游戏里面没有这个功能,那么可能只有用显示器获取了。有的主播会问,那我不用显示器获取,游戏结束后怎么办,是黑的啊。如果你的机器能带动显示器获取(游戏不卡),那么就加上吧(注意要放在最下面,因为上面覆盖下面,右键顺序可以调整)。如果带不动,可以用个图片源,放个好看的桌面背景,又好看又节省资源。
动手能力更强的,可以使用OBS自带的自动场景切换插件,这里就不展开说了,中文的,看看界面和百度下教程有解释的。还有的主播一局游戏结束后第二局发现无法获得,黑了,这是部分机器上游戏源的一个bug,你只要重新添加即可,如果嫌麻烦,游戏源还有个快捷键设置,按下等于重加了。部分游戏不支持游戏源需要用窗口获取,窗口获取里面的参数会问如何调整?其实方法很简单,大胆试验!就那几个参数,什么内部整个,获得图层,什么兼容模式,你点下再预览下,看看游戏是否获得了,有画面就ok了,多试验几次就知道正确的参数了。
编码器
再介绍下三个编码器。
通常情况下,用第一个,这个是使用CPU来编码的,优点是兼容性高,画质好,缺点是占用CPU最高。
如果机器带不动了,那么可以用第二个和第三个。
如果不能选择是灰色的,说明你的机器不支持或者没有打开(检查驱动)。
后面两个调用硬件显卡来编码,画质会降低,但是不占用CPU了,游戏卡顿会很大缓解。但是尤其是第三个,画质会差不少(一定要自己对比,别懒,不就试验2次看看就知道了吗)
使用第三个如果直播黑屏了勿惊慌,点到高级,修改预设,挨个试验,总有不黑的(一般比如nvdefault)
高级
下面介绍x264的高级。这里每个参数不详细说了,很多和画质关系不大。
你所要注意的就是x264 CPU预设,越往上,CPU使用的越小,但是画质越差,越往下,就是越slow,CPU使用的越高,但是画质越好。通常用veryfast,对自己cpu有信心的可以调高(前方高能预警,调这个后一定要开你直播的游戏立刻测试下,别太有信心了)以上参数通过你反复的对比测试(啥叫对比测试,就是你改下参数,去看下直播间的效果)找到合适的后,我们最后重点来说下码率的问题。
码率的选择
各大平台默认1500是有道理的,平台不会忽悠自己的主播,所以你先以1500码率为初始点。100,200的上加,判断依据包括
- 是否OBS提示丢帧了,一旦提示丢帧说明码率高了,就别加了,要适当降低
- 观众是否喊卡了,喊卡了说明平台无法给你搭配如此高的带宽了(注意要大部分观众,偶然的不算,你可以喊网络好的朋友帮你)
还要注意一点,由于OBS会优化传输,所以在测试时,你可以勾上CBR,不要他优化,因为你要测试出你的码率能力嘛,但是直播时,80%情况要去掉cbr,切记。
最后你发现比如加到2800,画质好,不丢帧,观众反馈不错,而加到2900就开始丢了,那么你这次直播的最佳码率就是2800了。下次不一定是这个数值,但是反复多直播一些日子,你也就大概知道一般多少了。预览是不会丢帧的,因为预览是不传输数据的,仅仅让你看画面,必须开始串流才行。
最后再介绍一个方法,在出现问题时,如何判断是你的问题还是平台的问题。那就是不直播,点开始录制!!!!!!!!!!!
录制完一段时间后去看这个视频。录像文件在这里:
如果录制的视频就有同样问题,那么就是你的本机参数没有调整好。如果录制的ok,平台直播出来有问题,比如颜色失真了,马赛克巨大,那么就是其他原因。