QtScrcpy 音频传输指南:3 步把 Android 手机声音同步到电脑
2026/9/3 8:48:26 网站建设 项目流程

QtScrcpy 音频传输指南:3 步把 Android 手机声音同步到电脑

【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy

如果你用 QtScrcpy 把安卓手机投到电脑上,多半遇到过这种情况:画面在电脑里,声音却还从手机扬声器里跑。这个项目的音频传输功能(基于 sndcpy 工具)解决的就是这个问题——把手机正在播放的声音实时送到电脑扬声器,实现真正的"所见即所闻"。

手机在屏幕、声音在手机上:音频传输解决什么

投屏工具通常只搬画面,声音留在手机上。你要么凑近手机听,要么手机外放时电脑和手机两个声音打架。开启 QtScrcpy 的音频传输后,手机的声音会实时从电脑扬声器出来,手机那头则保持安静。

QtScrcpy 里谁负责音频传输

这个功能由"手机 + 电脑"两端协作完成,涉及三个部分:

  • 手机侧:随程序分发的 sndcpy/sndcpy.sh(Windows 下是 sndcpy.bat)脚本,负责安装和启动手机上的 sndcpy 应用;
  • 电脑侧:audio/audiooutput.h 定义的 AudioOutput 类,负责收数据、放声音;
  • 界面:ui/dialog.cpp 里的"安装sndcpy / 开始音频 / 停止音频"三个按钮,点了才触发上面两件事。

声音链路怎么走:从手机到电脑的 5 步

理解原理只需一条链路,谁做什么、数据往哪流:

  1. 你点"开始音频",AudioOutput::start() 收到设备序列号和端口号 28200,然后启动 sndcpy 脚本;
  2. 脚本通过 adb 找到手机 → 没装过就自动安装 sndcpy.apk → 用 appops 授予 PROJECT_MEDIA 权限(读取系统音频流的权限)→ 执行adb forward tcp:28200 localabstract:sndcpy(端口转发,把手机里 sndcpy 应用的一个内部端口"借用"到电脑本机的 28200 端口)→ 启动 sndcpy 应用;
  3. 手机上的 sndcpy 捕获设备音频,通过刚才那条转发隧道发到电脑的 127.0.0.1:28200;
  4. 电脑端一个 TCP 套接字(跑在工作线程里)连上本机 28200 端口,来多少数据就收多少;
  5. 收到的数据按 48kHz、立体声、16bit 的 PCM 格式(未压缩的裸音频)直接写进系统的默认播放设备,电脑扬声器出声。

整条链路上电脑只做了"收 + 放",编解码的活儿基本没干,所以额外开销很小。

启用音频传输的最快方法

前提:手机已用 USB 连上电脑并开启 USB 调试。

  1. 打开 QtScrcpy,在左侧设备列表里选中你的手机——预期:列表里能看到设备序列号;
  2. 点"开始音频"——预期:底部日志区滚出 "Ready playing...",电脑上开始有手机的声音;
  3. 用完点"停止音频"——预期:声音立即停止,脚本进程被终止。

界面按钮最终调用的就是这一行(在 ui/dialog.cpp 中):

m_audioOutput.start(ui->serialBox->currentText(), 28200);

首次使用不用手动点"安装sndcpy",start里的脚本会检测到没装过就先装。单独点"安装sndcpy"适合只想预装应用、暂不播声音的场景。

两个值得了解的参数

  • 端口 28200:写死在按钮回调和脚本里。什么时候动它:同时给多台手机投屏,或 28200 被其他程序占用时,需要改 ui/dialog.cpp 和脚本里的端口保持一致;
  • 音频缓冲:Qt5 分支里setBufferSize(48000*2*15/1000 * 20)约 300ms 缓冲(在 audio/audiooutput.cpp 中)。什么时候动它:声音有卡顿可以适当加大,追求更低延迟则减小,但要留够网络抖动余量;
  • 播放格式 48kHz/2 声道/16bit PCM:启动前会先查声卡是否支持,不支持会打印 "audio format not supported" 并放弃播放,一般不用改,但换声卡设备后失败时先怀疑它;
  • config/config.ini 里的 AdbPath:adb 找不到或版本异常时,可在这里指定 adb 的完整路径。

没有声音?先检查这 4 项

  1. 设备没被 adb 识别:设备列表为空时会提示 "No device is connected!"。先确认 USB 调试已开启、数据线支持数据传输;
  2. 安卓版本太低:sndcpy 捕获音频依赖 Android 10 及以上的系统能力,旧系统装上也抓不到声音;
  3. 转发隧道没通:日志出现 "audio socket connect failed",说明 sndcpy 应用没起来或端口转发失败,重新点一次"开始音频"让它重走流程;
  4. 格式不支持:日志出现 "audio format not supported",属于电脑侧声卡问题,换一个输出设备试试。

适合谁用

  • 游戏直播:手机开游戏,画面和声音一起进 OBS,不用再架手机麦克风();
  • 视频投屏:在电脑大屏上看手机视频,声音从电脑音箱出;
  • 远程演示/教学:给围观的人听清手机里的提示音和通话声。

【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询