邀客猫™分享社区

 找回密码
 立即注册

一键登录

搜索
查看: 4388|回复: 5

OBS-推流视音频参数设置全攻略

[复制链接]

142

主题

308

帖子

11万

积分

美品达人

Rank: 7Rank: 7Rank: 7

积分
110644

突出贡献

发表于 2020-5-14 18:37 | 显示全部楼层 |阅读模式
质量、带宽和计算负荷相关 一
OBS是一个免费的开源网络“直播“软件,任何人都可以免费使用。这里对“直播”二字打引号,是因为该软件目前主要用于网络直播领域,但其实还有别的功能,比如视音频的录制、转文件封装等等。
  在进行直播推流时,为了平衡我们电脑配置、网络带宽和视频主观质量三者之间的问题,我们要做的一件非常重要的事情是对相关的参数进行配置。
  下面是一些主要参数的配置方法。
  一.编码器:OBS-studio(24版本)->右下角设置->输出->串流中,将“输出模式”改为“高级”,既可以看到编码器、码率控制、比特率、CRF等等等参数,我依次做一个总结,如果有错误之处,望指正。
c41edf0fc706cbab06590da275a3bd21.png
  这里选择编不同的编码器时,所调用的编码芯片不同,在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权衡的结果。
主人,发帖子很辛苦,赏一个吧!
回复

使用道具 举报

142

主题

308

帖子

11万

积分

美品达人

Rank: 7Rank: 7Rank: 7

积分
110644

突出贡献

 楼主| 发表于 2020-5-14 18:38 | 显示全部楼层
  三.码率
  码率是单位时间内编码器产生的数据量。由于H264编码的压缩特性,编码器产生的码率并不是完全等于我们设定的码率。如前所述,码率控制的方式不同,实际码率会有很大的不同,特比是在vbr模式下,如果是静止画面,即使我们设定的目标码率为5M,实际码率可能只有几十K。而对于剧烈运动的场景,码率可能会升至7M+。
  在其余参数相同的情况下,我们设定的目标码率对计算资源的影响不大,比如设定的目标码率为8M和10M相比,CPU的使用率可能基本感觉不出什么变化,当然这也和我们CPU本身的计算能力有关。归结起来就是,目标码率越高,对计算资源要求越高,但该影响不明显。
  码率对视频质量的影响是显而易见的,在其余条件相同的情况下,码率越高,画质质量会越好,这是由于更高的码率携带了更加丰富的视频信息,越能呈现更丰富的细节。
  在实际项目中,我们最要关心的是码率对带宽的影响。OBS中设置的目标码率是编码器编码后的数据率,实际上由于传输中还牵涉到源端和目标端的信息交互、信号重传、协议开销等等,所以实际占用的带宽会比编码器产生的数据率高。推荐申请的运营商接入带宽不能低于目标码率的2倍。如果当地的网络资源不稳定,波动较大的话,那么申请的运营商带宽还应该提高。
  一旦实际码率高于带宽,就会出现丢帧现象。编码器生成的码字会存放在缓存(cache)中,再通过网络传输到目标端,缓存是编码器申请的一块内存空间。

网络传输的速度小于编码器产生码字的速度时,缓存会被逐渐填充满而导致溢出,产生丢帧现象。
  四.关键帧间隔
  在H264编码中,图像会进行分组,每一组叫一个GOP序列,在一个GOP序列中的第一帧是关键帧,关键帧的特点是只要接收端接收到了该帧的数据,就可以还原这一帧的完整画面,该序列中的其余帧是参考关键帧进行了数据压缩,这些帧的数据本身是不完整的,需要借助关键帧的信息才能完整还原这些帧的图像信息。
  关键帧间隔越大,也就是GOP越长,数据压缩越大,实际码率就会越低。但GOP太大会导致画质变差,特别是在运动画面中最为明显。所以我们不建议GOP设置太长,以确保画面质量,默认情况下可以设置为0,即系统自动设定。如果自己设置,可以考虑在半秒到2秒之间,比如我们的帧率FPS=30,那么关键帧间隔可以设置在15~60之间。
  五.CPU使用预设
  这是指在使用X264编码时,对CPU运行能力的要求。

  从下拉框中我们可以看出一共分从了10级,即从最下面的placebo到最上面的ultrafast。级别越靠上,CPU处理的数据量越小,编码时对CPU的处理能力要求越低,但画质会越来越差。该参数对CPU的影响非常大,即使是从faster到fast一个级别的变化,CPU的运行量可能就会翻倍。一般可以选择在fast~veryfast级别之间,平衡画质与CPU的负载。
回复 支持 反对

使用道具 举报

142

主题

308

帖子

11万

积分

美品达人

Rank: 7Rank: 7Rank: 7

积分
110644

突出贡献

 楼主| 发表于 2020-5-14 18:40 | 显示全部楼层
一.音频的输入
音频的输入有3种方式,跟随视频源的音频采集、音频输入输出捕获和默认设备采集。
  一.跟随视频源方式
  跟随视频源是指视频源信号(如文件、流信号、blackmagic采集卡)嵌入了音频信号的,添加这些信号源之后,音频信号会自动被OBS识别并被捕获作为输入音频信号源。
  1.音视频文件:当我们对某一个场景添加“来源”时选择“媒体源”方式或者“VLC视频源”时,对于的音频信号会被系统自捕获并显示在“混音器”中。
  2.流信号:如果我们添加的是rtmp、rtsp等流信号,当添加这些流信号时,如果流中嵌入了音频信号,对于的音频会被OBS自动捕获并希纳是在“混音器”中。
  3.blackmagic采集卡捕获:这是采集卡捕获中的一个特例。安装了最新的blackmagic采集卡驱动后,在“来源”窗口添加信源时,会有“blackmagic设备”选项,如下图所示:

创建blackmagic源后,在弹出的设置窗口中,设置好“声音连接”和“频道”(一般默认即可),采集卡中对于的音频会被捕获并在混音器中可见。

对于blackmagic的采集卡,我们也推荐用这种方式添加音视频源,可以避免出现声画不同步的现象。根据测试,如果采用“视频捕获设备”+“音频输入捕获”的方式添加blackmagic采集卡,很容易出现声画不同步。
  二.音频输入输出捕获
  音频输入输出捕获是指OBS可以音频输入输出设备的音频信号,并把这些输入或者输出音频信号作为OBS的输入信号。这些设备一般包括主机的内置扬声器和麦克风、外置扬声器和麦克风、外置声卡、外置视频采集卡(嵌入音频)等等。

  以采集音频输入设备为例,添加了音频输入捕获后, 相关的音频输入设备会罗列出来,如果是多通道设备,每个通道也会罗列。
  选择自己需要的设备即可。选择好了之后,对于外接嵌入音频的视频采集卡,有一点需要特别注意:即使用设备时间戳的问题。

  外接的视频采集卡为了音视频的同步,一般会在采集卡里面加入时间戳,对于这样的卡,请务必将"使用设备时间戳"勾选上,否则会出现音视频不同步的现象。
  音频输出捕获实际上等于把输出的信号又作为OBS的输入源,这在有些特殊的场合中会使用到,比如使用了音频虚拟输出。
  三.默认设备采集
  进入OBS的 设置->音频菜单,可以进行音频默认设备的设置。
  音频默认设备的信号源和第二点的音频输入输出设备是一样的,其最大的差异有2点:
  1.支持的数量不同
  采用音频输入输出设备方式添加不限制数量,但通过默认采集方式添加音频源,输出设备可以添加2个,输入设备可以添加3个。
  2.音频显示的位置不同
  采用默认设备采集方式添加的音频,该信源与场景无关,切换场景时,音频不会被切掉,但采用“跟随视频源”和“音频输入输出捕获”方式添加的音频源,是与某个特定的场景捆绑的,场景切换后,音频源会跟着被切掉。因此,对于有多路音频信号时,我们需要事先规划好音频的添加方式,以免造成事故。
  由于默认设备采集方式对音频源支持的数量有限,如果在工作中需要支持更多路时,可以在多个场景中复制几份音频源。
回复 支持 反对

使用道具 举报

142

主题

308

帖子

11万

积分

美品达人

Rank: 7Rank: 7Rank: 7

积分
110644

突出贡献

 楼主| 发表于 2020-5-14 18:41 | 显示全部楼层
二.音频的混音、监听和输出
OBS音频输出配置好后,接下来需要做的工作是混音和监听。
  一.混音
  OBS的混音功能有限,做高级的混音操作,需要配合相关的插件。OBS本身带有少量的音频滤镜,网上也有OBS第三方的滤镜供用户选择,在使用第三方滤镜或者插件之前,请确认其稳定性,否则建议宁缺毋滥。
  1.混音器
  每个声源信号会在OBS的混音器窗口中混音器中显示出来,默认是横向布局,用户可以根据自己的习惯改为垂直布局,右键点击混音器中的空白窗口即可进行布局选择。

  在混音器中,点击每个音柱后面的“喇叭”按钮,可以关闭或者打开该路音频,可以鼠标拖到对应的“推子”降低该路的音量(注意这里不能增益)。
  在混音器中空白处右键点击"高级音频属性"进入设置界面

每个音频信号均会在此罗列。
名称:对应的声源名称;
状态:激活状体表示当前的音频源可以用,当前(切换至PGM)场景下的音频源和默认采集设备方式添加的音频源均会处于激活状态。去掉“高级音频属性”设置界面左下角“仅活动源”前面的复选框,可以列出未激活的音频源。
音量:可以进行声音的衰减或者增益(区别:混音器中的推子不能增益,只能衰减),单位dB。
单声道:复选后,该声音会左右声道混音。
平衡:调节声相,即左右声道声音的大小比例。
同步偏移:增加或者减小延迟,一般用于调整声画同步。
音频监听:有关闭监听、只监听、监听并输出三个选项。“关闭监听”表示该路信号只输出到master不监听,“只监听”表示该路信号只监听不输出到master,如果要预先检查某路音频是否正常,可以只监听该路信号。
轨道:一共可以输出6个音轨。对于有分轨录制要求的场合,可以把不同的音频源输出到不同的音轨上。但对于推流,目前obs25版本及以下只能推一个音轨。
  2.热键控制
  声音的混音功能可以通过热键来进行控制,主要控制静音、按住静音和按住讲话。
  (1)静音(取消静音)
  进入设置->热键,找到对应的信号源名称,可以给静音和取消静音分配热键,比如活动现场有主持人和节目表演时,我们可以对主持人这路音频分配静音F1和取消静音F2,当主持人上场时,我们按下F2,主持人下场后按下F1静音,防止节目表演过程中主持人聊天或者对稿的声音进入master。

(2)按住静音
按住静音是指按住所分配的快捷键后,该路音频被屏蔽,松开按键后恢复。按住静音的设置有2步操作(不分先后),首先第一步需要在设置->音频中找到该路音频源并后勾上“启用按住静音”(按住静音延迟是指按快捷键后等多少ms后才自动静音),第二步在设置->热键中找到该路音频,给“按住静音”分配快捷键。
(3)按住讲话
方式同“按住静音”。
二.监听
  进入OBS的设置->音频界面,可以选择监听设备。

我们可以根据实际情况选择监听设备,在活动现场一般比较吵闹,或者为了避免影响周边的人,建议用耳机监听。
注意:禁用windows音频闪避 是指将obs的监听声音增大,电脑其余的声音比如QQ声音等降低,可根据实际情况选择。
  三.音频输出
  这里只说下推流的输出。
  推流输出需要做两步操作:
  步骤1:确定所采用的输出通道,
 设置-> 输出->串流选项卡中,如下图所示,选中需要的音轨。
 步骤2:将需要的输入音频源混到该音轨上,具体方法请参考混音中的“高级音频设置”。
回复 支持 反对

使用道具 举报

142

主题

308

帖子

11万

积分

美品达人

Rank: 7Rank: 7Rank: 7

积分
110644

突出贡献

 楼主| 发表于 2020-5-14 18:43 | 显示全部楼层
OBS推流时的视频色彩相关参数设置在使用OBS进行推流直播时,特别是采集卡采集摄像机信号进行推流直播时,我们可能会遇到这样的问题:
  1.为什么流信号与源信号相比有色彩偏差?
  2.明暗对比较大的视频信号,比如有树荫和太阳,在摄像机上可以看到比较暗淡的部分和十分明亮的部分,但编码后的视频流感觉就看不见了?
  这很大可能是我们对于视频色彩部分的参数设置不够精确导致的。打开OBS右下角“设置”按钮(或者左上角 文件->设置 )。

  选择“高级”,右边“视频”里面有4个色彩相关的设置选项,分别是渲染器、颜色格式、色彩空间和色彩范围。
  1.渲染器
  实现视频渲染的计算单元,包括了渲染的具体算法和接口等等,OBS提供direct3D11(win10 x64操作系统)和OpenGL2个参数供选择。理论上因二者算法不同,在色彩的还原度上肯定会有差异,但通过比较却无法判断二者的高下,因此我们可以保持默认,以确保OBS运行的稳定性。
  2.颜色格式
  颜色的抽样方式和保存格式。因抽样方式不同,不同的参数对色彩的还原度不同。系统提供I444、I420、RGB和NV12四种颜色格式。其中I444和RGB的色彩采样高,还原度最好;NV12的采样和I420是一致的,不同的是数据保存的格式,因此二者的还原度是一致的。在推流时,如果前方视频信号是I420(目前大部分高清摄像机默认设置为420采样),我们建议选择NV12,如果选择别的格式,会导致系统额外的计算开销,却不能提高色彩的还原度。
  3.色彩空间
   即色域,体现了色彩的丰富性。系统提供(rec.)601和(rec.)709两种色域空间供选择,709较601能提供丰富的色彩,如果信号源是709空间色域,而OBS设置为601的话,推流的信号可能会出现饱和度不够、偏灰、偏白等现象,系统默认为601,推流(特别是高清推流)时建议改为709。
   4.色彩范围
   即色彩的动态范围,在明暗对比很大的画面中,动态范围越大,越能呈现更多的细节。系统提供“局部”和“全部”两个可选参数,建议选择全部。比如一个画面中有阳光、树荫和树荫下的人,如果色彩范围为“局部”,树荫下的人有可能就看不见,导致细节信息丢失。
  
   对于色彩空间和色彩范围两个选项,除了以上位置需要配置之外,如果是采用板卡采集外来信号或者捕捉USB摄像头(非网络)信号,在添加“视频捕获设备”视频源时,也需要进行设置,这一点也务必注意。


回复 支持 反对

使用道具 举报

0

主题

9

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2020-5-14 18:43 来自手机 | 显示全部楼层
……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|邀客猫™分享社区 ( 鲁ICP备13021355号-1 )

GMT+8, 2024-3-28 21:31 , Processed in 0.534368 second(s), 44 queries , Gzip On.

Powered by Youkaite.com X3.2

© 2019-2020 Qingdao Yorkcat Trading Co.,Ltd

快速回复 返回顶部 返回列表