V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lcdtyph
V2EX  ›  macOS

macOS 防止微信 QQ 视频语音时其它 APP 声音减小的一种方法

  •  1
     
  •   lcdtyph · 2020-09-02 19:54:10 +08:00 · 4671 次点击
    这是一个创建于 1303 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自从微信 mac 版支持群组语音之后就一直在 mac 上用群组语音,但是有个很恼人的问题即开启语音后会自动降低其它 APP (如浏览器,音乐)的声音。

    一开始使用 sound control 来把微信的声音降低,这样在开启语音后拉高全局音量来抵消这个影响,但是新的问题即是如果语音意外断开了,那么音乐会瞬间恢复全局音量吓人一跳…对耳朵也不好。

    于是有了这个 repo: https://github.com/icpz/WeChat-AntiDuck

    基本思路即注入一个 dylib,在 dylib 加载时 hook 掉 CoreAudio 的私有接口 AudioDeviceDuck,注入方式参考了 Sunnyyoung/WeChatTweak-macOS

    有需要的朋友可以拿去自行修改

    https://github.com/icpz/WeChat-AntiDuck

    10 条回复    2022-08-12 21:58:11 +08:00
    lcdtyph
        1
    lcdtyph  
    OP
       2020-09-02 20:06:48 +08:00
    完全不知道什么人会觉得这个功能有用- -|||

    mac 一些自带的 app 会提供一个选项来关闭这个功能,也是通过调用私有 api 实现的。然而第三方如果这么做就没法上架 app store……
    FEDT
        2
    FEDT  
       2020-09-02 20:08:29 +08:00 via iPhone
    好像有用等下看看
    lcdtyph
        3
    lcdtyph  
    OP
       2020-09-02 20:17:56 +08:00
    @FEDT #2
    有问题的话欢迎反馈讨论
    wyq977
        4
    wyq977  
       2021-02-02 18:33:34 +08:00   ❤️ 1
    我的天 终于搞定了 之前 lol 的时候一直音量会变小

    这个方法好像 Catalina 之后就不行了 https://zhaiyiming.com/archives/disable-macos-audio-ducking.html
    https://www.v2ex.com/settings
    Stackoverflow 上好像说过 LoopBack app 但是感觉为这下个 app 有点不值得

    谢啦 要是有问题会梯 issue
    cwcc
        5
    cwcc  
       2021-08-25 16:04:27 +08:00
    一条命令解决

    printf "p *(char*)(void(*)())AudioDeviceDuck=0xc3\nq" | lldb -n QQ
    cwcc
        6
    cwcc  
       2021-08-25 16:06:04 +08:00
    @crazywhalecc 这个命令需要在启动 QQ 后执行,有时候会因为各种 QQ 的谜之 bug 卡住一会儿,多等等跑完这条命令就可以不降低音量了。
    lcdtyph
        7
    lcdtyph  
    OP
       2021-08-25 16:29:03 +08:00 via iPhone
    @crazywhalecc
    对的,就是靠这个原理做的这个小工具
    主要是不用每次都手动输入了,而且 0xc3 是硬编码的 x86 ret 指令,换到 arm 平台还要变化
    doudoubaba
        8
    doudoubaba  
       2021-09-03 09:33:35 +08:00
    @lcdtyph 噫,我本人啊,从来没有好好听一次完整的这个问题描述,但是每次都有被吓到
    fivebamboohu
        9
    fivebamboohu  
       2022-02-10 22:27:16 +08:00
    @lcdtyph 请问 printf "p *(char*)(void(*)())AudioDeviceDuck=0xc3\nq" | lldb -n QQ 这个命令在 arm 下的编码是多少?或者哪里可以找到?
    anticooo
        10
    anticooo  
       2022-08-12 21:58:11 +08:00
    2022 年了,真不知道这 Feature 有什么用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:04 · PVG 19:04 · LAX 04:04 · JFK 07:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.