Scream 虚拟声卡完整教程:3 步把 Windows 电脑的声音送上局域网
【免费下载链接】screamVirtual network sound card for Microsoft Windows项目地址: https://gitcode.com/gh_mirrors/sc/scream
想象这样一个场景:你在书房用 Windows 电脑看视频,却希望声音从客厅的音箱出来,而不需要再连一根 HDMI 线。Scream 就是干这件事的——它是一个 Windows 内核级虚拟声卡驱动,把通过该声卡播放的音频实时打包成 PCM 网络流,发到局域网里,任何运行接收端的设备都能把它放出来。
💡 30 秒看懂原理:它到底怎么把声音"搬"走
Scream 的工作链路只有三步:
- 输入:Windows 里多出一块虚拟声卡,你把它设为播放设备,所有应用照常向它"输出"音频;
- 处理:驱动在内核里把这些 PCM 采样装进 UDP 数据帧(5 字节头 + 最多 1152 字节音频数据),以组播方式发往固定地址
239.255.77.77:4010; - 输出:接收端(另一台 Windows、Linux、树莓派等)监听这个组播地址,把采样喂给本地音频设备发声。
整个过程没有用户态组件,全部在内核完成,所以延迟很低;接收端只需"开端口、读数据",系统会自动处理组播加入(IGMP)。
🧭 快速上手:最短路径装好第一对收发设备
本节带你走完"装驱动→配接收→验证出声"的最短路线,全程只需管理员权限一次。
第 1 步:安装发送端驱动(Windows PC)
右键以下脚本之一并选择"以管理员身份运行"(不确定架构就选 x64):
| 系统架构 | 安装脚本 |
|---|---|
| 64 位 Windows | Install/Install-x64.bat |
| 32 位 Windows | Install/Install-x86.bat |
| ARM64 Windows | Install/Install-arm64.bat |
安装后,在 Windows 声音设置里会多出一块 Scream 声卡,把它设为默认播放设备即可。
第 2 步:部署接收端(二选一)
- Windows 接收:直接运行安装包内的
Install/clients/Windows/ScreamReader/ScreamReader.exe,它是一个托盘程序,只提供一个音量滑条,开机后放着即可; - Linux/Unix 接收:进入
Receivers/unix/目录编译(源码说明见 Receivers/unix/README.md),依赖已安装的情况下两条命令即可:
mkdir build && cd build cmake .. && make编译出scream可执行文件后,直接运行./scream即进入组播接收模式。若机器有多个网卡,用-i指定接收网卡,例如./scream -i eth0。
第 3 步:放行防火墙
接收端若有入站防火墙,放行UDP 4010端口(自定端口则放行对应端口)。
成功验证
在 Windows 电脑上随便播放一段音乐或视频。如果接收端的扬声器/耳机里同步传出声音,且拖动 ScreamReader 的音量条能实时改变响度——恭喜,链路已经打通。
🎛️ 关键参数配置:一张表抄走推荐值
这几个参数决定音质、带宽和声道正确性,照抄默认推荐值就能覆盖 90% 的使用场景。
| 参数 | 在哪里设置 | 默认推荐值 | 可选值 | 适用场景与效果 |
|---|---|---|---|---|
| 采样率/位深 | 声卡属性"高级"选项卡 | 48000 Hz / 16 位 | 44100 Hz/16 位、96000 Hz/32 位等 | 44.1k/16 位放 CD 音乐免重采样(约 1.4 Mbps);高采样率多声道会显著推高带宽(96k/32 位立体声约 6.1 Mbps) |
| 扬声器声道 | 声卡属性"配置"向导 | 立体声 | 5.1、7.1 | 接收端支持多声道时再开,声道位置由 Windows 侧向导统一下发 |
| 发送地址 | 无需设置 | 组播239.255.77.77:4010 | 注册表单播(见避坑手册) | 组播天然支持多台接收端同时出声 |
| 静音阈值 | 注册表SilenceThreshold | 不设置 | 10000(约 1/4 秒) | 静音时停止发包,省带宽;数值越小吃药越及时 |
| 接收端目标延迟 | scream的-t参数 | 50 ms | 100 ms 等 | 出现爆音时调大,以少量延迟换稳定 |
调整采样率时,在扬声器属性对话框切到"高级"选项卡即可,如下截图所示:
默认推荐组合:48000 Hz / 16 位 / 立体声,带宽占用小、兼容性最好,5.1 及以上声道时官方也建议维持 48 kHz/16 位。
🎬 实战示例:三个高频场景这样落地
场景一:书房电脑 → 客厅音箱(跨房间)
- 场景描述:电脑留在书房,声音要出现在客厅的音响系统上。
- 具体操作:在客厅放一台树莓派(或任意 Linux 小主机),装上 USB 声卡接好音箱;在树莓派上运行前面编译好的
./scream;书房电脑装好 Scream 驱动并设为默认播放设备。 - 预期效果:电脑里点播放,客厅音箱 100 ms 左右开始出声,两边走在同一局域网即可,无需任何"配对"动作;换房间或增加一台树莓派同样能收到,因为走的是组播。
场景二:5.1 环绕游戏音送到家庭影院
- 场景描述:游戏支持 5.1 输出,家庭影院功放接了 5.1 音箱,想把游戏音场原样搬过去。
- 具体操作:先用声卡属性里的"配置"向导(见下截图)把 Scream 声卡设成 5.1,游戏内音频选项同样选 5.1;采样率保持 48 kHz/16 位,避免多声道 + 高位深把带宽吃满;接收端使用支持多声道的 Linux 接收程序(Windows 的 ScreamReader 不支持多声道位置映射,立体声场景才用)。
- 预期效果:环绕声各声道落到功放对应位置,低音炮、后环绕各归其位。
场景三:多台设备全屋同步
- 场景描述:家里两间房各有一套音响,希望同时放同一内容且保持同步。
- 具体操作:两个房间各放一台接收端,各自运行接收程序(Windows 跑 ScreamReader,Linux 跑
scream),发送端保持默认组播,无需任何额外设置。 - 预期效果:两台设备同时出声且内容同步;若个别设备偶发卡顿,给该设备调大接收缓冲(
-t 100)即可。
🩹 避坑手册:按"现象→原因→解决"排障
1. 现象:运行安装脚本提示需要管理员权限,驱动没装上原因:脚本内部调用 devcon 安装驱动,必须以管理员身份执行。 解决:右键脚本 → "以管理员身份运行";仍失败时确认 Windows 版本与架构匹配(x64/x86/arm64 各用对应 bat)。
2. 现象:较新的 Windows 10(1607 及以后)拒绝安装驱动原因:微软收紧了内核驱动签名规则,交叉签名的驱动默认被拦。 解决:在 BIOS 中关闭安全启动;或按官方说明添加注册表值HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy下的UpgradedSystem(DWORD,值 1)。
3. 现象:Windows 11 上安装脚本报错、设备不出现原因:安装脚本依赖的 devcon 与 Windows 11 不兼容。 解决:走测试模式路线——管理员命令行执行bcdedit /set testsigning on并重启,确认桌面右下角出现"测试模式"字样;再进入Install/driver/<架构>/目录执行pnputil /add-driver .\Scream.inf /install;完成后执行bcdedit /set testsigning off并重启。
4. 现象:发送端有声音,接收端完全没反应原因:最常见的是接收端防火墙拦了 UDP 4010,或接收程序跑在了错误的网卡上。 解决:接收端放行 UDP 4010;多网卡机器用./scream -i <网卡名>指定接收接口;还不通就在接收端用抓包工具看 UDP 4010 有没有包(项目自带 Wireshark 解析插件,源码在 tools/wireshark/,可按其说明安装后直接解码 Scream 包)。
5. 现象:组播收不到,单播能收到(部分交换机/软路由环境)原因:组播流量被网络设备丢弃或未正确转发 IGMP。 解决:给发送端改单播——在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Scream\Options键下新建字符串值UnicastIPv4(目标 IP)和 DWORD 值UnicastPort(默认 4010),重启后生效;接收端加-u参数运行。
6. 现象:Linux 接收端播放时爆音、卡顿原因:默认 50 ms 缓冲在负载较高时不够,产生 underrun。 解决:先降低进程优先级(niceness),仍爆音则调大目标延迟,如scream -o alsa -t 100;可用-v查看 ALSA 实际缓冲信息辅助判断。
7. 现象:多声道下 ScreamReader 声道错位原因:ScreamReader 不支持多声道(立体声以上)的位置映射。 解决:立体声场景随便用;5.1/7.1 场景改用 Linux 接收端。
⚖️ 与替代方案对比:它省在哪、贵在哪
| 维度 | Scream 虚拟声卡 | 蓝牙音频 | HDMI/3.5mm 有线 |
|---|---|---|---|
| 端到端延迟 | 毫秒级(内核直发) | 通常 50–200 ms | 接近零,但受线材限制 |
| 音质 | 原始 PCM 无损传输,可上 32 位/96 kHz | SBC/AAC 等有损压缩 | 无损,但格式受接口限制 |
| 覆盖范围 | 整个局域网,跨房间无上限 | 约 10 米内 | 一根线的长度 |
| 同时设备数 | 任意多台组播接收 | 1–2 台 | 1 台 |
| 硬件成本 | 只需一台能跑接收程序的小主机 | 需蓝牙耳机/音箱 | 需线材与接口匹配 |
| 配置难度 | 中等(驱动签名、防火墙各一次) | 低,配对即用 | 最低,插上即用 |
如果你的诉求只是"换个房间放声音",蓝牙和有线都做不好,Scream 是目前少见的免费开源解法。
总结与获取方式
Scream 用一块内核级虚拟声卡 + 一条局域网组播流,把 Windows 的音频自由送到局域网里任何能播放 PCM 的设备上,装驱动、开端口、跑接收程序,三步即可出声。
仓库地址(克隆即用):
git clone https://gitcode.com/gh_mirrors/sc/scream【免费下载链接】screamVirtual network sound card for Microsoft Windows项目地址: https://gitcode.com/gh_mirrors/sc/scream
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考