«

»

Feb 20 2021

关于安卓手机直播手游方案的研究

前言废话

这将是一长篇大论的文章。其实写这种文章我是有抵触心里的(拖了有半年之久)。差不多我写完了之后,就得有一堆大粪UP主给做成视频版,好处都让他们占了,我这个文字原版就或许根本没人读。

我又能说什么呢,看个视频连猫都会,读文字要学士学位

(至于为什么不自己做成视频呢,是因为去年7月份的时候不是台式机坏掉了么.主角突然没了,这戏就没法拍了)

这篇文章不会写成教程,而是准备长篇大论从最开始分析问题到得到多种解决方案后的研究过程记录,所以文章内会有超大量的废话连篇人工加点难度(其实最开始就是这么打算的)。

再说一遍:这篇文章是 研究过程记录,而不是教程。

都用到了哪些东西

贴张图表示下,整个过程我用到的一部分硬件:

IMG_5419

  • 3.5mm TRS 一拖二 (绿色的那个)
  • 3.5mm TRRS 耳机麦克风一分二转接线(绿色左边白色的那个)
  • 2004年买的一个立式麦克风
  • USB无线网卡
  • 3.5mm TRS 耳机
  • 3.5mm TRS 公对公连接线
  • PS4 用手柄 DS4

除了照片上这些,还用到了一些照片上没有的硬件:

  • Sony Xperia XZ1 一台,玩手游当然要用手机(平板其实也行)。需要提到的特性:支持 802.11ac网络,原生支持 3.5mm 耳机接口,支持标准的 Android 9 系统,不需要 root、GP 或 任何其他特殊特性 支持。
  • 台式机电脑一台。需要提到的特性:主板板载声卡原生 3.5mm line-in 接口 和 3.5mm mic 接口,Windows 7 操作系统
  • 笔记本电脑一台。需要提到的特性:笔记本板载耳机麦克风二合一接口,Linux Mint + 垃圾Win10 双系统
  • Linesys WRT32x路由器一台。需要提到的特性:支持 802.11ac网络。
  • Type-C连接线。需要提到的特性:给手机充电,开启 adb 调试。
  • 一根铁丝或导线

顺带再讲下用到的软件:

  • 某安卓模拟器 (Windows)
  • 某直播平台直播工具 (Windows)
  • adb (Linux/Windows)
  • scrcpy (Linux/Windows)
  • obs-studio (Linux/Windows)
  • Arcaea (Android端音游)

要是你看完这些就耸了的话我建议你就别继续往下看了。这些年写博客见得最多的就是看个标题就敢在评论去大谈阔论的。独立博客有一点最好,就是想让谁闭嘴就让谁闭嘴,有能带你去告老师啊。


手游直播面临的问题

如果你不知道现有的手游直播有什么问题,可以去各大直播网站观察一下他们的手游都是怎么直播的。

多数直播间,是没有游戏的声音,而只有主播自己嘚吧嘚吧的声音的。
有一部分直播间,是有很清晰的游戏声音,但是同时能看到个大鼠标在那点来点去的,游戏内容也仅限于不需要手机特性的游戏。
极少部分直播间,有游戏的声音,但是非常不清晰,且能听到主播的环境音,体验非常不好。

关于第一种,其实是手机投屏到电脑上,直播的是一个投屏,而没有声音。
第二种,其实是在电脑上用安卓模拟器在玩。 假如一个游戏可以,或者说只需要用鼠标键盘就能玩,那还玩个鸡巴的手游,直接玩PC游戏不好么。 不需要手机的多点触摸,不需要手机的体感特性,那还做个鸡巴手游,做到电脑上不就得了,在屏幕上整一堆虚拟键就成手游了?莫不是给猿猴用来做智力测试的游戏?
第三种,这的确是在用手机直播手游,只不过开了大音量,把游戏声音外放后又由手机麦克风录制回来,这样的话清晰度不仅很遭,更重要的是对于周围环境来讲太糟糕了,玩个游戏声音还要开超大,你是在地铁上外放抖音的耳聋老年人吗。

没错,假如你在直播网站手游专区上翻翻几页,就会发现这些直播间玩的游戏其实跟手游完全不搭边,几乎都是在播 PC 端游戏的劣化移植版。玩正经手机上该玩的游戏的都没声音或者声音不正常。

原因是谷歌认为声音内录功能存在不安全性所以将其于系统层面封闭了。除非魔改系统,否则声音内录功能就是没戏。


寻找解决办法

一般人能找到的成型方案

思路一:模拟器

在50寸电视上插着键盘聊微信,在5寸的手机上看电影。这种人我见多了。

问题是:多点触摸这特性怎么实现?模拟器最多只能实现基本的捏合缩放,多点触摸?要不你给电脑接4个鼠标吧,把鼠标绑脚上。

思路二:USB Type-C (MHL Alternate Mode)

USB to HDMI,这个线贵不贵先不说,你还得搞个 HDMI 采集卡。

最大的问题是:你的手机还支不支持这不受待见的协议?

思路三:Miracast

作为官方嘴上最支持的投屏方案,的确有个尝试的必要。

但是 Win7 原生不支持这个协议。网络上太多嘴上说支持这些投屏协议的工具,其实都是 Win10 Only,说白了也就是 拿着 Win10 原生功能套皮卖钱,还卖得巨贵!

而且找这玩意还挺费劲,垃圾 Win10 的控制面板想找什么都驴唇不对马嘴,只能靠搜索。

snap20200709145419.png

问题是我的台式机是有线连接到路由器的,这抽风的 垃圾Win10 没有无线网卡就不支持协议启动。

snap20200709113445

好吧,你嘴上声称是点对点无需无限接入点即可实现的协议,我就给你搞块无线网卡。

snap20200709144858

装上无线网卡,还得再安装组件。

snap20200709145150

而且还能安装失败。垃圾 Win10

snap20200709145429

装上之后开启。

snap20200709145521

手机端选择 Miracast,结果:

Screenshot_20200709-150923

不支持 HDCP,所以只支持桌面、音乐和设置。

毛用没有,要你何用!


自己做方案

现有方案肯定都是扯淡了,不如自己动手解决。

分析问题

手机直播困难,要解决的问题可以拆分为两个:

  • 手机图像被 OBS 获取
  • 手机声音被 OBS 获取

问题一个一个解决。

实现:手机图像被 OBS 获取

  • (注1:以下内容不区分 Linux/Windows 操作系统)
  • (注2:以下内容不区分 台式机/笔记本)

事实上各种PC端支持手机投屏直播的傻瓜软件都有实现,不过我从来没相信过这些公司会开发这种软件,肯定是从开源社区照搬照抄的某开源软件。所谓 社区一开源,大佬就自主

手机投屏到 PC 端,其实只要一个轻量软件就可以:scrcpy,轻量,原生,低延迟,支持 Linux 和 Windows。

使用 scrcpy 需要:

  • 手机 Android 版本大于等于 5.0 (API 21)
  • 手机端开启 adb 调试,不需要 root
  • PC 端需要安装对应手机的 adb 驱动

scrcpy 是基于 adb 实现的,adb 支持无限调试,所以 scrcpy 也就支持无线投屏。scrcpy 理论实现就是将手机屏显通过手机的硬件编码通过 adb 传输到 PC 端播放出来。scrcpy的高性能可以实现 35~70ms 的低延迟(以60fps为例的话延迟只有3帧左右,可以说非常完美了)。使用无线模式需要先在有线连接下开启 adb 的 tcp 端口映射,每次手机重启后都需要重新做端口映射;视频编码和数据传输都比较耗电,你的手机电量也会下降的很快,所以连接线需要准备好。scrcpy 默认是使用手机的硬件编码,这种编码方式在一般手机上都是画质不怎么样的,所以默认会使用8M的码率,不建议降低码率,无线模式同样对无线通信有相当大的压力,使用 2.4G 频带信道的 802.11bgn 网络完全不靠谱,建议使用 5G 频带信道的 802.11ac 网络或更高级的无线网络。建议打开手机的显示触点,这样就可以在捕获的窗口上显示手指按到的位置了。

简单来讲,搞个安卓版本大于等于5.0的手机不难。不需要root所以没什么难度。找个好路由器,找不着就用线插在电脑上。

但是如果你的破手机系统是厂家魔改的导致打不开 adb 调试或者 adb 调试有残疾,或者手机硬件魔改的不支持标准的adb驱动,且厂家不放出 adb 驱动或者驱动不好使,那么:活该

默认情况下,scrcpy 会投影窗口到 PC 端,使用 OBS 进行捕获就可以了,但是这里有一个问题,即手机既可能是横屏状态,也可能是竖屏状态,所以窗口大小在 OBS 中是一个麻烦的问题。这里给出一个解决办法,在启用 scrcpy 的命令行中添加全屏参数,这样 OBS 需要捕获的窗口就强制变为 PC 的屏幕分辨率。虽然在竖屏状态下会两边留黑且损失图像信息,但竖屏直播本身就是一大难题。

scrcpy 的具体安装和使用方式参见其官方文档

好了,手机图像被 OBS 获取被轻松解决了。


实现:手机声音被 OBS 获取

尝试1: sndcpy

scrcpy 不提供音频服务,并推荐了 sndcpy。然而 sndcpy 支持的 Android 最低版本为 10,而我手中的手机最高版本只有 9,所以无法研究 sndcpy。

尝试2: 手机输出至双设备
  • (注1:以下内容以 Win7 为 PC 端操作系统)
  • (注2:以下内容以 台式机 为 PC 端)

这里就是 3.5mm TRS 公对公连接线该登场的时候了。

Mic/Line-in 接口在台式机上很常见,和音箱接口长得一样,一般的台式机主板都有至少三个这样的接口,一般都可以做到自适应随便插,插上之后屏幕上会弹出一个让你选择插上的是什么硬件的窗口(前提是驱动安装正确)。

screenshot_by_flameshot_at_20210218210119

像这样的主板,你甚至可以插5个麦克风上去。如果主机机箱安装正确的话,机箱前面板还有2个相应的自适应接口(前提是驱动安装正确且机箱安装正确)。

snap_at_747-1

名义上, Mic 接口当然是为了插麦克风/话筒的接口,而 Line-in 是为了对接音源输出设备的。对于手机来讲,应该属于音源输入设备。但是手机的 3.5mm 输出推力有限,很可能会出现音量太小的问题,所以根据自身情况选择 Mic/Line-in 接口。

因为多数手机在插入耳机之后,手机默认就会将外置扬声器静音,就一般状况起见,将手机、公对公连接线、一拖二进行如下方式连接:

  • 一拖二公头插入手机
  • 耳机公头插入一拖二
  • 公对公连接线插入一拖二
  • 公对公连接线插入台式机的 Mic 或 Line-in(根据后续OBS捕获到的音量进行选择)

IMG_5736

现在可以实现手机的声音输出同时传输到耳机和PC端了。

snap_at_746

这部分说实在的,相当好理解。

但是不完美! 这个方案有一定的 反向信号干扰 问题。

简单来讲,动圈式麦克风的原理就是声音使震膜振动,然后在震膜形成微弱的波动电流。而动圈式耳机也会有类似的效果。也就是说,在这种手机一拖二的连接方式下,你对着你的耳机吼一嗓子,也是会被 OBS 那端捕获的。你的耳机越好,你的现在电阻越低,你的电脑声卡越棒,这个问题就越明显。

输出设备稀里糊涂成了输入设备了

尝试3: 手机声音直接监听至台式机 Win7 端,使用台式机进行监听

那就不在手机端接耳机,直接用公对公线把手机和电脑连接起来不就好了?

PC 端这边,在控制面板声音设置选项卡里,在对应的输入设备上勾选【监听此设备】。

snap_at_747-2

好了,现在手机的声音可以通过电脑的声音输出设备外放了。

这就完事了?

你要是个低标准的家伙,那么应该早在看第一页的时候就 Ctrl+W 拜拜了。都读到这份上了我觉得你也会继续看下去了。

没错,就如同刚才的一拖二方案一样,这个方案同样是不完美的,这个方案有 声音延迟问题

如果你不在意声音延迟问题,那可以拜拜了。

但我是要播音游的!我就要关心延迟!

尝试4: 解决直通连接延迟问题

视频延迟的问题,你可以在手机上放一个60fps的计数视频,同时投屏到电脑,用一个可拍照设备同时拍下手机和电脑屏幕,就能看出来手机投屏的延迟。

声音不一样,声音目前没有什么简单办法作出非常客观的延迟判定。

但我们可以用主观判断啊。是时候拿出另一个宝贝软件了:Arcaea

Arcaea 是一款手机端音游,游戏免费曲包收费。我们将要使用到的是这款游戏设置页面的一个功能:Audio Offset

顾名思义这是为了设置声音延迟偏移量的。首先在手机外放或插耳机状态下测一下手机的声音延迟。一台正经的手机,在平均偏移量这里应该是很小的数值。当然这个值是主观的,与你个人的反应速度也相关,不过怎么说平均值也应该小于70。如果过百了,我建议你就别关心直播延迟问题了,反正已经足够延迟了。(如果过200了证明你手机够垃圾)

Screenshot_20210218-220758

接下来再将手机使用公对公线连接至电脑,开启 Windows 的侦听,重复 Audio Offset Setup,大概你会得到这么个结果,或者比这个好一点的结果,或者更遭的结果:

Screenshot_20200708-225724

平均将近 300ms 的延迟,这不是闹着玩的延迟,这要是玩音游估计人都得跑偏到河里去了。

Windows 自带的声音侦听功能延迟大,需要另辟蹊径。

那么声卡是否自带监听功能?虽然是焊在主板上不过毕竟现在声卡都不弱。答案是肯定的。就是刚才展示过的 Realtek 高清晰音频管理器,这个驱动自带的配置工具不仅可以用力配置插入设备的属性,同样也能进行输入监听。

snap_at_747-3

关掉 Windows 的监听,在这里打开监听,就没有那么严重的延迟问题了。

Screenshot_20200616-225604

虽然仍增加了一点延迟,不过可以在接受范围内。只要这个主观结果最终结果在 100ms 以内就好。

尝试5: 解决电流声

其实到这里,问题就已经大部分都解决了。只需要将 OBS 对音频的串流设置正确就可以了,一般来说只要静音对应音源输入,只打开桌面音频(监听的输出设备)就可以了。

(关于 OBS 的多音轨设置请自行研究)

不过,可能会有部分用户,在PC端插上公对公连接线之后,音箱就一直会发出嗡嗡响的电流声。这个问题在某些情况下会严重的令人崩溃。

主要原因是因为台式机没有妥善接地,可能是因为所使用的三孔插座地线有问题,或者房屋过于老旧,接地孔没有正确接地,或者干脆就是人身上带着静电,总之是由于各种问题,导致机箱带电,所有该接地的地方全都有电流导致的。这个问题说难解决也难解决,毕竟又不能改造旧房屋电路。但是解决办法也不是没有,找跟电线拧在机箱螺丝上,另一端接在墙上地上铁窗上,保持个接地状态,就能缓解。

snap_at_1

啪!

尝试6:Linux 下的手机声音连接笔记本直接监听

我之前也说了,这篇文章的素材和研究,其实大部分在半年前就完成了。半年前,同样发生了一件糟糕事,那就是《我的台式机坏了》,导致我没法完成 OBS 监听的这一部分。

没错,OBS 自身也包含监听功能。

前提是我得有个靠谱的硬件才行啊!

因为台式机坏了,所以所有电脑上的工作不得不迁移到笔记本上。这笔记本默认装不上 Win7,我也没打算尝试,一堆 Intel 的 Win10 Only 驱动就很难解决。所以 Windows 下 OBS 监听的这一部分就只能放一放。主要还是关心这个软件的延迟问题,因为传闻 垃圾Win10 后 Realtek 声卡可能不带 高清晰音频管理器 了。

另一方面我也想研究下 Realtek 这种板载声卡在 Linux 和 Windows 下的延迟区别。在没有硬件的条件下也只能放弃了。

那就先研究下 Linux 下的手机声音直接监听

  • (注1:以下内容以 Linux Mint 为 PC 端操作系统)
  • (注2:以下内容以 笔记本 为 PC 端)

首先一个大难题:这款笔记本只有一个 3.5mm 接口。查文档。

screenshot_by_flameshot_at_20210218232146

Headset接口,好吧,那就拿出 3.5mm TRRS 耳机麦克风一分二转接线 (想不起来这货啥样的可以看文章开头的照片)

仔细想想,这玩意有问题啊,这玩意只有四根芯,耳机左右声道,那麦克风就只有一个声道不是吗(这不是废话么)。唉算了,手游或许也没人那么计较双声道的问题,灯会找找设置看看手机上有没有强制单声道输出,不行就搞个 3.5mm TS公对公连接线,强制让手机单声道输出。

结果硬件接好了,我该怎么开监听?Linux Mint设置面板没这功能啊!

还得自己找监听软件。

最后在这里找到了 PulseAudio Volume Control (pavucontrol)

配合 Linux Mint 的声音控制面板,就可以听到输入的声音了。

但是有个相当严重的问题:音质超渣。这声音,听起来就像是,用一个老式电话机听歌,就那种 采样率 特别低的感觉。

问题是,在底层看到的的确是 44100Hz 的采样率。

screenshot_by_flameshot_at_20210219232530

就哪里不对。

我不认为这是 Linux 的锅。但又想不出什么其他办法(掏出 PS4 的手柄 DS4)。

DS4 同样有一个 3.5mm 接口,这就是标准的 3.5mm TRRS 耳麦接口。把公对公连接线从笔记本上拔下来插到手柄上。音质没什么提升。因为 DS4 的耳麦接口是专门设计成语音聊天的,其麦克的音频采样率只有 16000Hz,音质差才是正常的。

反正在这个破本在 Linux 下是没办法正常捕获手机音频了。

尝试7:垃圾Win10 下的手机声音直接笔记本监听(一)

每天一句:垃圾Win10。日常:(1/1)

  • (注1:以下内容以 垃圾Win10 为 PC 端操作系统)
  • (注2:以下内容以 笔记本 为 PC 端)

硬件连接思路和在 Linux 下一样:3.5mm TRRS 耳机麦克风一分二转接线。

结果刚怼上去的时候,垃圾Win10弹窗了。

snap006

啥?戴尔官方的蓝皮书上不是写的 Headset 接口吗!怎么识别成多合一自适应接口了?

首先以 Headset 的思路继续。

第一个大问题:没有 Realtek 高清晰音频管理器! 好吧延迟问题回归。至少首先先试试能不能有动静再说,我还在怀疑采样率的问题。先走 Windows 监听方案。

垃圾Win10的控制面板特别垃圾,绕了好几圈也只找到了个啥都干不了的空面板。结果还是得进入 Win7 传统面板。我一看,哇!

snap010

默认单通道输入采样率 16000 Hz 不可修改。

我直接放弃!

尝试7:垃圾Win10 下的手机声音直接笔记本监听(二)

话说为什么 Headset 接口变成多合一自适应接口了?呵,我才懒得关心。

直接把公对公线怼上去。弹窗直接改成线路输入。

snap007

我一看,哇!

snap008

输入设备多了一个线路输入。

snap110

双通道 48000Hz 采样率。

问题是仍然没有 Realtek 高清晰音频管理器!

当然 Win10 的监听功能完全不需要考虑。Win10 相比 Win7,新研发的功能或许能有正面评价,但是任何一个原有功能,到 Win10 之下都是劣化的,根本不用考虑。

snap076

(Win10的声音设置面板比猫脸都干净,啥有用的设置都没有,还是得靠 Win7 的设置面板才行)

看来这回只能先用 OBS 的监听功能了。

snap111

  1. OBS 添加来源 音频输入捕获,设备选择线路输入
  2. 打开高级音频属性,音频输入捕获设置为监听并输出
  3. 混音器面板,桌面音频设置为静音,音频输入设备根据手机音量调节

这样设置的目的是为了在PC端可以同时听到电脑的声音和手机的声音,同时在推流和录制中只包含手机的声音而不包含电脑的声音。

只要巧妙的设置音频监听,声音轨道等这些设置,可以实现非常复杂的实现,OBS 可以生成包含6条音轨的录制文件,可以很方便的为后期编辑进行准备,同时又不干扰直播串流。关于音频监听、声音轨道以及串流音轨的设置,请参考 OBS 白皮书,这里不讲。

试一下延迟(依旧是使用 Arcaea),延迟大概在 80 毫秒左右。

但是这里有一个巨大的问题:这个破笔记本虽然是八代i7,2018年的顶配,但是犹豫其散热问题所以性能很渣,再加上垃圾Win10的魔幻加成,尤其是 CPU 的睿频,一直反复横跳。(具体请参见我另外两篇文章《我的台式机坏了-续2:这 Dell Inspiron 7380 破本的散热问题》《垃圾Win10》)犹豫这个问题,会出现音频采集出现 增加延迟 的问题。

很奇怪不是么,性能如果不够了,图像方面是丢帧,但是声音方面却是增加延迟。我倒是期望这个音频捕获也是丢声音才好,不然图像卡了一下,后面的所有声音都拖慢,就很糟糕。

Screenshot_20201130-214610

因为PC的性能问题,音画不同步甚至可以达到1秒中。

没解决的办法。OBS 官方的说法是勾选 音频输入捕获 设置页的 使用设备时间戳,但是在我这没有什么效果。

目前就是保证CPU别跑满(这垃圾戴尔开个浏览器一个页面就会爆)。如果出现延迟现象了,在来源面板点击隐藏对应的捕获来源,再点击显示回来(注意不是点混音器的静音)。

尝试8:试着降低延迟

OBS 的的音频输入捕获延迟并不低,已经很接近我能接受的 100ms 上限了。而且还有增加延迟的问题。所以得想想是否有其他方法。

在网上搜了一下,有很多人抱怨过 Win10 的侦听功能延迟太高,于是有了这么一个方案:FL Studio + ASIO4ALL

(参考资料:https://www.bleepingcomputer.com/forums/t/487977/windows-line-in-or-microphone-latencydelay-solved-march-2013/

snap037

总之费老大劲把所有该设置的都设置了,实测监听延迟和 OBS 不相上下。

这里就该思考一下,这个延迟到底是什么了。

  1. 声音信号从手机的耳机插孔传出来的时候,有一个延迟值
  2. 声卡硬件捕获,有一个延迟值
  3. 声卡通过驱动传输给操作系统,有一个延迟值
  4. 操作系统通过输出设备播放,有一个延迟值

理论上这四个值加起来就是我们目前得到的延迟值,但实际上,这个过程中有采样量化编码的过程,由于操作系统软件的介入,很可能还有重复采样量化编码的过程。千万别打开操作系统自带的任何优化设置,延迟直接坠毁。但是驱动自带的声音优化设置对延迟影响就比较低。ASIO4ALL的思路就是从支持ASIO的声卡直接取采样量化的信号出来,不经过操作系统的二次处理,直接丢给FL Studio这样的软件。

可惜延迟并没有下降,那么 80ms 可能就是这破本的硬件极限了,看样子没法再继续优化了。

尝试9:试着让 Linux 下能识别这个多合一 3.5mm 接口

有延迟是因为 CPU 跑满了;CPU 跑满的一半原因是垃圾戴尔,另一半原因是垃圾Win10,所以如果能在 Linux 下实现音频输入,那么至少可以回收一半以上被 Win10 浪费的系统资源。

  • (注1:以下内容以 Linux Mint 为 PC 端操作系统)
  • (注2:以下内容以 笔记本 为 PC 端)

回到 Linux 下。首先要检查的是这是个什么鬼硬件。

snap20200708233750

喔草。客制芯片。

你知道我这辈子最讨厌的就是客制化。这玩意既伤害客制化甲方又伤害客制化乙方,最终的伤害都是由用户承担的。一般来讲,一个产品团队只能维护一条产品线,客制化就是在产品线上分叉,这个叉上面的东西大部分都是无法回归到其生产主线上的,所以未来如果主线产品有什么新特性或者修复了什么问题,客制化都享受不到,同时客制化软件也无法使用主线产品的任何资源,包括驱动在内;客制化当然还是要花钱的,越是长久价钱越高,所以甲方一般只会维护很短一段时间就不掏钱继续维护了。如果在之后犹豫某些原因,比如操作系统更新导致旧版客制化驱动无法使用,要么用户就退回旧操作系统,要么就买新的吧。反正最终要买单的是用户。

现在不仅知道这破本的指纹驱动是桃花岛小作坊的,连声卡芯片都是客制化的了。垃圾戴尔。

snap20200708234328

反正是在 Realtek 找不到任何芯片资料。

尝试10:在 Win10 下逆向推理结果搞出一堆妖蛾子差点逼我重装系统
  • (注1:以下内容以 垃圾Win10 为 PC 端操作系统)
  • (注2:以下内容以 笔记本 为 PC 端)

说到底我有点纳闷,在 Win10 下插线,怎么弹出来的不是 Realtek 的管理工具,而是一个那么简陋的玩意。

MaxxAudioPro 是个什么鸟东西?

我回到 Win10 瞎捣鼓了一遍,结果你猜怎么着?笔记本的 3.5mm 接口不识别了!

啊坡乌诶呸! 什么垃圾驱动。我在网上搜了一下,发现有太多的人在网上骂 Dell 关于这个耳机孔失灵的问题。官网还有对应的文档:《戴尔笔记本上的 Waves MaxxAudio 设置可导致有线麦克风无法正常工作》。我照着排查了一遍,启动项Check,服务项Check,守护进程Check,结果 3.5mm 接口照旧不识别。

因为这个故障是分为两部分的:

  • 在 PC 上安装了 Waves MaxxAudio 的情况下,插入 3.5 mm 插孔的麦克风将无法工作
  • 在 PC 上未安装 Waves MaxxAudio 的情况下,插入 3.5 mm 插孔的麦克风将无法工作

(这个时候只要微笑就好)

事实上我在研究这玩意之前想看看到底是什么进程在做这种事,于是从任务管理器搜到了对应的目录,结果目录权限是 TrustedInstaller 的,连路径都看不到。

snap083

snap085

snap086

我想着点进去看看,是否有可以手动启动的办法,于是想着先改变下权限进去看看,等下再变回来不就得了。

结果呢,里面的进程全部都不能以用户身份执行。我寻思着那就算啦,改个遍历谁知道会错改哪些文件,就准备把目录权限往回改,结果呢。

snap093

奇幻 Windows10,微软从 XP 就开始搞用户权限,20年了依旧很奇幻。Linux 那边几十年都没变过,有什么安全隐患吗?

我还在社区那边搜到了一个很神奇的解决方案,他说他的声卡驱动安装目录下有个 RtkNGUI64.exe ,点开之后就能弹出个 Realtek 的设置界面,也有一样的功能。我用 Everything 全局搜索了一下,我的声卡驱动并不包含这个文件。但是!我的台式机主板驱动里面有! 我觉得点开也死不了人,点开看看呗。

snap101

好家伙!在2014年的技嘉主板驱动里点开了2018年戴尔笔记本的声卡驱动设置界面!而且能用!奇幻!

简单来讲,这些功能原本都是 Realtek 主线产品可以正常支持的,但是到了 Dell 这边就全变成客制版了,客制的芯片,客制的驱动,客制的配置工具,甚至为了这个客制配置工具还专门把主线支持的配置工具给阉割了。而且做工粗鄙的可怕,安装脚本可以说就真的是个初中生水平。

snap103

只要安装失败就提示已安装新版本。

总之,光是这个阶段,我从中午一直干到下午3点半,浪费了4个小时,终于把弹窗搞回来了。具体是怎么搞回来的我是真的不想写了。只不过界面最后变成英文的了。

snap079

反正不想在折腾了。Linux 那边,不识别就不识别吧,不想管了。

尝试11:独立USB声卡

一根 3.5mm TRRS 耳机麦克风一分二转接线 大概是 20 多块钱,一块最便宜的 USB 声卡则是 30多块钱。搞一块?

不搞,谁TMD知道参数是什么,连个蓝皮书都没有,万一输入又只有 16000Hz 怎么办,人家说了是插麦克风又不是插 Line-in。

买完用不了又一块电子垃圾。


效果

直接贴几个前一阵直播手游的直播录像比较好。

我玩手游的时候音量开得都有点小。我感觉以后得调大一点。

[Arcaea] WHITEFISTS – 1F√(FTR_LV8混关)(手游)

充分利用了多点触摸,以及需要声音低延迟的游戏。

[手游] 3DS RainbowRoad R/T -马里奥赛车巡回赛

这个游戏在菜单下是强制竖屏,在游戏模式可以支持横屏竖屏自适应。这个游戏同样支持体感,但是我懒。

(买不起 Switch ,老3DS不硬改又不能直播,只能直播马车手游了,还不能联机)

结论

哈你是不是想读个开头再读个结论找个总结就也想自己直播手游了?这文章我当时光是研究就用去了好几天,花了不少精力准备硬件和材料,尝试了很多次,用了很多方法。

仅仅是写这些文字就用去我足足两天的时间,包含了主要的研究过程以及成型的解决方案,按照我以前的月薪,怎么地也能卖个 1860.46(税前) 了。你觉得你可以无门槛白嫖?

如果苹果用户想问苹果该怎么办。你都有钱买苹果成为尊贵的苹果用户了,为什么不直接花点钱找找人解决这个问题呢。

对于手机是无 3.5mm 接口的安卓手机用户,嗯,我没有,我不知道,我不管,自己研究去。

两天,干点啥不好。

11 comments

Skip to comment form

  1. 智障沙雕小复读机
    Google Chrome 81.0.4044.117 Google Chrome 81.0.4044.117 Android 10 Android 10
    Mozilla/5.0 (Linux; Android 10; Redmi K30 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.117 Mobile Safari/537.36

    两天,干点啥不好

  2. 老张博客
    Microsoft Edge 88.0.705.74 Microsoft Edge 88.0.705.74 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74

    哈哈,在5寸手机上看电影我遇到过,在50寸电视上聊微信真的没有遇到过!

    1. 石樱灯笼
      Firefox 83.0 Firefox 83.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0

      在50寸电视上插着键盘聊微信,同时在5寸的手机上看电影。
      我忘记写“同时”这两个字了。

  3. 夏目贵志
    Google Chrome 88.0.4324.182 Google Chrome 88.0.4324.182 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36

    和我想象中的不一样啊,我以为一部手机就能直播 手游了!!

    1. 石樱灯笼
      Firefox 83.0 Firefox 83.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0

      你下个直播平台的App就是可以一部手机直播手游啊,没毛病。

      1. 夏目贵志
        Google Chrome 88.0.4324.182 Google Chrome 88.0.4324.182 Windows 7 x64 Edition Windows 7 x64 Edition
        Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36

        看你的方案,需要的设备多了!

        1. 石樱灯笼
          Firefox 83.0 Firefox 83.0 Ubuntu x64 Ubuntu x64
          Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0

          这么快就出现了

  4. 小宝
    Safari 14.0.3 Safari 14.0.3 Mac OS X  10.15.6 Mac OS X 10.15.6
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15

    直播音游呀,音频的确得配好

  5. 游客
    Microsoft Edge 46.01.4.5140 Microsoft Edge 46.01.4.5140 Android 10 Android 10
    Mozilla/5.0 (Linux; Android 10; Redmi Note 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.116 Mobile Safari/537.36 EdgA/46.01.4.5140

    233,我只是手机玩我的世界经常忘记家在哪,所以我都是开着录屏记录,但是最近开了个光影,感觉手机录屏好像有点影响帧数,按博主的方法,直接miracast,投屏电脑成功,还有声音,用了win10自带的游戏工具录屏,问题完美解决。

  6. yy
    Microsoft Edge 90.0.818.46 Microsoft Edge 90.0.818.46 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46

    谢谢博主的文章 对我很有帮助

    这两天在研究如何把switch的音频输出line in到笔记本里,最后的解决方法是选择用笔记本自带的3.5当line in然后用一个30块钱独立USB声卡当新的3.5耳机孔。方法很笨但是很有效,配合voicemeeter监听switch的游戏声音,体感延迟不高(比win10自带的侦听好太多了)

    1. 石樱灯笼
      Firefox 88.0 Firefox 88.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0

      独立声卡我没买,没闲钱。另一方面现在3C都不提供白皮书,所以不清楚到底延迟会怎样。
      voicemeeter我也有试过,感觉跟obs监听的区别不是很大,不过更容易操作一些。跟Win7下Realtek的监听比就延迟比较高,所以我文中没有提。然而垃圾Win10本身的CPU占用太高了,再跑一个软件电脑完全吃不消。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据