You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ShareX录屏音频源动态切换配置问题求助

ShareX录屏音频源动态切换配置问题求助

这个场景太常见了——外接麦克风在的时候想用它录双声道,拔掉之后自动切回虚拟音频捕获器,避免录屏崩溃。可惜ShareX本身的命令行参数没办法直接做动态设备判断,得借助脚本先检测麦克风是否存在,再给ShareX传递对应的参数,具体可以这么操作:

方法一:用PowerShell脚本实现动态判断

PowerShell的设备查询能力比较灵活,写个脚本就能搞定:

  1. 新建一个文本文件,把下面的代码粘贴进去,然后保存为Start-ShareX-Dynamic-Audio.ps1(注意后缀是.ps1不是.txt
# 替换成你的外接麦克风名称,要完全匹配
$targetMic = "Headset (HD 450BT Hands-Free AG Audio)"

# 查询系统中正常工作的音频输入设备
$micIsAvailable = Get-CimInstance Win32_SoundDevice | Where-Object {
    $_.Description -eq $targetMic -and $_.Status -eq "OK"
}

# 根据检测结果生成对应命令行参数
if ($micIsAvailable) {
    # 外接麦存在时,用双声道混合的参数
    $shareXArgs = '-f dshow -i audio="Headset (HD 450BT Hands-Free AG Audio)" -filter_complex amix=inputs=2:duration=longest'
} else {
    # 外接麦不存在时,只用虚拟音频捕获器
    $shareXArgs = '-f dshow -i audio="virtual-audio-capturer"'
}

# 启动ShareX,这里的路径如果是默认安装就不用改,否则替换成你的实际路径
Start-Process -FilePath "C:\Program Files\ShareX\ShareX.exe" -ArgumentList $shareXArgs
  1. 怎么运行这个脚本?
    • 右键点击脚本文件,选择「用PowerShell运行」
    • 或者创建一个快捷方式,快捷方式的「目标」填:powershell.exe -ExecutionPolicy Bypass -File "C:\你的脚本存放路径\Start-ShareX-Dynamic-Audio.ps1",以后双击快捷方式就能启动带动态音频切换的ShareX了

方法二:用批处理脚本实现(适合不熟悉PowerShell的用户)

如果觉得PowerShell麻烦,也可以用批处理脚本:

  1. 新建文本文件,粘贴下面代码,保存为Start-ShareX-Dynamic-Audio.bat
@echo off
set "targetMic=Headset (HD 450BT Hands-Free AG Audio)"
set "shareXPath=C:\Program Files\ShareX\ShareX.exe"

:: 检测目标麦克风是否存在且正常工作
wmic sounddevice where "Description='%targetMic%' and Status='OK'" get Description | findstr /i "%targetMic%" >nul

if %errorlevel% equ 0 (
    :: 外接麦存在时启动ShareX并传双声道参数
    start "" "%shareXPath%" -f dshow -i audio="Headset (HD 450BT Hands-Free AG Audio)" -filter_complex amix=inputs=2:duration=longest
) else (
    :: 外接麦不存在时只用虚拟音频捕获器
    start "" "%shareXPath%" -f dshow -i audio="virtual-audio-capturer"
)
  1. 直接双击这个批处理文件就能启动ShareX了

几个关键注意点:

  • 麦克风名称要完全匹配:包括空格、括号、大小写,最好从系统的「声音设置」里复制粘贴准确的设备名称,不然检测会失败
  • ShareX路径要正确:如果你的ShareX不是装在默认的C:\Program Files\ShareX,一定要替换成实际的安装路径
  • PowerShell执行策略:如果运行PowerShell脚本时提示权限问题,右键用「管理员身份运行PowerShell」,然后执行Set-ExecutionPolicy RemoteSigned(选Y确认),以后就能正常运行脚本了

为什么原来的命令会崩溃?因为当外接麦拔掉后,FFmpeg(ShareX底层用的录屏引擎)找不到指定的dshow音频设备,直接报错退出,导致录屏崩溃。提前用脚本检测设备存在性,就能避免这个问题啦。

备注:内容来源于stack exchange,提问作者JinSnow

火山引擎 最新活动