Mac obs推流直播无声音解决方法
Table of Contents
注:本文中用到的Soundflower在BigSur里已经不起作用,新方法可以查看我这篇文章:Mac直播/录屏无声音解决方法,这篇文章比较详细的说明了Mac里音频输入输出的原理以及解决的方法,当然本文也有很多那篇文章没有讲到的,所以我还是建议看一下的。
无声的原因及解决办法
这个无声,说的是你直播游戏或电影时(窗口捕获方式),没有电脑内部发出的游戏的声音或播放视频的声音,但是麦的声音是有的,而没有声音的原因在于macOS没有内置的声音路由功能,所以要实现内录声音,必须通过第三方软件实现。
我们用到第三方软件叫Soundflower,它的原始版本是Soundflower-Original,不过原始版本现在都不维护了,所以还是用前面那个版本。
其实,这个问题不止是在OBS上,macOS上的任何直播软件(如钉钉、腾讯会议等等)都无法直接获取电脑的声音(比如播放音乐、在浏览器上播放视频、用播放器播放下载好的视频等等,只要是电脑本身发出的声音,任何macOS版的直播软件都无法直接获取),当然了,有些软件是自己有开发虚拟声卡来获取系统声音,比如腾讯会议就自带有“WeMeet audio device”虚拟声卡(在obs的声音输入里能看到)
其实不止直播,录屏也一样,因为直播其实就是相当于录屏,只不过是把录到的内容不断的实时传到直播服务器,再由直播服务器发送到各个客户端(就是观看直播的人的手机直播app里或者网页上),这个传输过程需要一定的时间,这也是为什么直播会有延迟。关于录屏没有声音的问题,请查看我的另一篇文章:macOS录屏无声音解决方法。
安装Soundflower
从这里下载Soundflower-版本号.dmg
,双击打开,注意打开后看到的是Soundflower.pkg
,Mac中跟系统结合比较紧密的软件很多都是.pkg
格式的,这种格式不像.app
格式的直接拖到“应用程序”就可以,而是要双击它,然后按提示安装,安装好之后它也未必会在“应用程序”中有图标,比如Soundflower.pkg
就没有。
Soundflower安装好之后,在系统偏好设置
→声音
→输出
里就可以看到两个Soundflower
设备
其中2ch和64ch有什么区别呢?ch是channel的意思,channel是通道,在声音这里指声道,一般情况下我们用2ch(即双声道)即可,如果你是专业的调音台,现场采集声音之类的,才用64ch(声道),这边也有解释。
在obs中添加音频输入捕获
安装Soundflower后,我们需要在obs的“来源”中添加一个“音频输入捕获”
选择从Soundflower(2ch)中捕获
然后要在顶部声音按钮中选择Soudflower(2ch),意思是把系统的声音输出到Soudflower(2ch)这个声卡中(因为obs添加的音频输入是这个声卡,如果你不把声音输入到这个声卡,它还是会没声音)
但要注意,上一步你把系统声音输出到Soudflower(2ch)中,这意味你电脑本身就不会播放出声音(因为你的声音没有往耳机或者自带喇叭输出),如果你要本机有声音,那就必须把这里的输出选择为Headphones(有插耳机)或Internal Speakers(内置喇叭)
未插耳机时的内置喇叭
综上所述,你无法同时让直播和电脑本身都有声音,只能选择其中一个,不过有解决办法,请看下边的“多设备输出”。
多设备输出
在聚焦搜索里搜索“音频midi”(英文叫“Audio MIDI Setup”),打开它,然后点击右下角加号→创建多输出设备,然后在创建的多输出设备里勾选上“Soundflower”和“内建输出”
然后在顶部菜单栏的声音里选择“多输出设备”,这样直播和电脑本机都能听到声音了(一个输出到soundflower软声卡,用于被直播软件识别并推流出去,而另一个Build-in Output就是内置声卡,会输出到内置的声音设备中,默认内置声音设备是电脑自带喇叭,如果连了耳机,那内置设备就是耳机,无论是插线耳机还是蓝牙耳机,都一样)
多设备输出调整音量
使用了多输出设备后,电脑自带的调声音大小的按钮是无法调声音的,因为你这么多个设备,如果用电脑自带的调声音,它不知道你要调哪个设备的声音,所以你需要在“音频MIDI”里调具体某个设备的声音
比如我现在多输出设置里勾选了两个,表示声音会同时输出到soundflower和Build-in Output这两个设备中,一个Soundflower(2h)用于输出给直播那边,另一个Build-in Output是输出到电脑自带的喇叭(如果连了耳机那就是耳机,有线和蓝牙都一样)
那如果我要调直播那边的音量,我就要调soundflower(2h)的音量,理论上来说,Master那条是主音量,而1和2两条分别是左右声道,但事实上我试了左右声道,没有区别,无论我调Master还是1或2,都一样会调两个耳机的声音,也不知道是我这边出什么问题了还是本来就是这样的,反正我觉得直接调主音量(也就是Master)就行
如果我要调自己听的音量,那就是调Build-in Output的音量,这个Build-in Ouput跟soundflower的区别是,它的主音量是灰色的,是无法拖动的,我们只能拖动1和2两个条,并且,这两个条控制左右声道是正常的,1是左声道,2是右声道(我是用耳机试的)
事实上,前面的soundflower(2h)我选的是output,它其实还有个input(如下图),我们调input的音量,跟调它的output音量是一样可以控制输出音量的,这是怎么回事儿呢?因为soundflower其实是先接收到系统的声音(系统输入到soundflower,叫input),再把它输出(叫output),所以无论我们在输入端还是输出端调,都能调最终的输出声音,因为你输入不够大,输出肯定也会变小
这个多设备输出的技巧还可以让你跟旁边的人一起看电影或听歌(比如你戴有线,他/她戴蓝牙,或者两个都是蓝牙耳机也行),具体请看:Mac多个蓝牙耳机同时输出声音(多人一起听歌/看电影)。
注意事项
要直播电影/电视剧,我们还可以使用“媒体源”或“VCL视频源”方式添加视频源(注意VLC视频源需要安装VLC播放器后才会有)
使用这种方式直播,默认本机是没有声音的(但直播那边有声音,而且貌似不需要安装Soudflower,因为是obs自己播放的),如果需要本机有声音,则需要点VLC视频源的齿轮,选择高级音频属性
然后在“音频输入捕获”的“音频监听”里,选择“监听并输出”,这样本机就有声音了
但要特别注意,这个“监听并输出”在使用窗口捕获方式时不能打开(即需要“关闭监听”),否则直播那边听到的是滋滋声而不是正常视频的声音
但使用“媒体源”或“VLC视频源”方式播放视频,必须视频文件在本地(在NAS也行),并且你无法控制视频(无法暂停、快进、快退等等所有在普通播放器能进行的操作都无法进行)。
而窗口捕获方式则可以直播在线视频(因为obs只是捕获窗口),并且由于是窗口捕获,所以你可以随便控制视频(暂停、快进、快退等等),在哪儿播放就在哪儿控制(比如在网页播放或在本地播放器或爱奇艺、优酷客户端)。
另外由于是捕获窗口,播放视频的那个窗口(比如浏览器)是不能最小化的,而且也正是由于是窗口捕获,所以obs对系统资源的占用会高很多,电脑会发热比较严重(特别是Mac),所以各有优缺点。
注意,由于窗口捕获,一般捕获的是整个窗口,所以如果你用浏览器播放电影/电视剧,很可能捕获的窗口比例不对,就算窗口比例对,也不方便移动,这时候最好使用“画中画”模式,一般视频网站都有画中画模式,而画中画模式是把视频放到一个单独的窗口的,这样你就可以直接捕获画中画窗口,从而能保证整个窗口刚好是视频而不是整个网页。
在 音频MIDI 设置中可以将内置扬声器输出与Soundflower 混在一起输出的,可以一试。 //:0
音频MIDI这个不错,已更新文章!