)
把安卓手机声音同步到电脑QtScrcpy 音频传输完整指南3 步配置【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpyQtScrcpy 是一款基于 Qt 的 Android 实时投屏控制软件除了镜像画面和键鼠操作它还能把手机扬声器的声音实时同步到电脑播放这就是本文要讲的音频传输功能。接下来我会先讲清为什么投屏了却没声音再带你用 3 步把手机声音接到电脑音箱上最后拆解 sndcpy 与 AudioOutput 背后的数据链路并附上一份常见问题的避坑清单。 先说痛点投屏画面很流畅电脑为什么没声音不少用户第一次连接设备后会发现画面实时跟手、操作也灵敏唯独电脑这边一点声音都没有。原因并不复杂——投屏协议本身只负责视频帧和输入事件的搬运音频数据始终留在手机里。QtScrcpy 为此引入了开源工具 sndcpy补上这条声音通道手机端捕获系统音频流通过 ADB 端口转发送出来电脑端再实时解码播放。你可以这样理解画面走一条管道声音走另一条QtScrcpy 负责把第二条管道接好。下面是 QtScrcpy 的主界面音频相关的按钮就在界面里 最快配置方法3 步启动手机声音同步第一步连上设备并开启 USB 调试用 USB 线或先完成无线连接把安卓设备接入电脑确认设备已启用 USB 调试并在程序左上角的设备列表里能看到它的序列号。没有设备时后面的按钮点了也不会生效——程序会直接提示 No device is connected!。第二步确认 sndcpy 已装好点start audio时程序会自动处理安装如果你只想先把应用装到手机上可以单独点install sndcpy按钮。这一步的实际工作由 QtScrcpy/sndcpy/ 目录下的脚本完成Windows 走sndcpy.batLinux/macOS 走sndcpy.sh流程大致是通过pm path com.rom1v.sndcpy检查 sndcpy.apk 是否已安装没装就自动安装用appops set com.rom1v.sndcpy PROJECT_MEDIA allow授予音频捕获权限执行adb forward tcp:28200 localabstract:sndcpy把手机的音频 socket 转发到本机 28200 端口启动 sndcpy 的 MainActivity并轮询确认进程已运行。第三步点击 start audio听声音对应源码在 QtScrcpy/ui/dialog.cpp 里核心就一行m_audioOutput.start(ui-serialBox-currentText(), 28200);传入当前选中设备的序列号端口固定为 28200。点stop audio则会调用stop()关闭接收线程和音频输出整个过程无需重启程序。连上设备后先投屏、再开声音画面与声音就同步到电脑了 背后原理声音是怎么跑到电脑音箱的手机端sndcpy 捕获音频流sndcpy 是一个专门的安卓音频转发应用包名com.rom1v.sndcpy它利用系统媒体投影能力把手机正在播放的声音截获出来挂到一个名为sndcpy的本地 abstract socket 上。ADB 的端口转发命令就是把它桥到电脑本地 28200 端口。电脑端AudioOutput 接收并播放真正干活的类是AudioOutput定义在 QtScrcpy/audio/audiooutput.h实现在 QtScrcpy/audio/audiooutput.cpp它对外提供三个方法start(serial, port)拉起 sndcpy 脚本并启动音频输出与数据接收stop()停止接收线程、释放音频设备installonly(serial, port)只执行安装不开始播放。数据接收部分用一个独立的QThread承载QTcpSocket连接本机 28200 端口后每当readyRead触发就把字节读出来直接写入音频输出设备。音频格式是固定值48000 Hz 采样率、双声道、16-bit 有符号 PCMaudio/pcmQt 5 使用QAudioOutput并设置了约 0.3 秒的播放缓冲用来吸收网络抖动Qt 6 则切换为QAudioSink。整条链路可以浓缩成一张表环节负责方说明捕获音频sndcpy.apk手机端截取系统音频挂到 localabstract:sndcpy跨端搬运ADB 端口转发tcp:28200↔localabstract:sndcpy接收数据QTcpSocket 工作线程连本机 28200 端口500ms 连接超时解码播放QAudioSink/QAudioOutput48kHz / 立体声 / 16-bit PCM 直出游戏、视频这类对音画同步有要求的场景这套方案都能覆盖 进阶跨平台与多设备怎么玩全平台一致Windows、macOS、Linux 下操作完全相同只有 sndcpy 的启动脚本不同.bat与bash .sh的切换在runSndcpyProcess()里按系统宏处理。macOS 下的界面如下多设备分组QtScrcpy 支持同时镜像多台设备并分组控制见 docs/ 中的演示每台设备各自独立启停音频互不干扰全局参数config/config.ini里的AdbPath、MaxFps等参数作用于整体投屏行为音频端口28200与采样格式则由代码固定普通用户无需改动。⚠️ 避坑清单常见问题一次说清现象原因与处理点 start audio 没反应设备列表为空先连接设备或设备Android 版本低于 10sndcpy 仅支持安卓 10 以上提示权限或安装失败重新点一次install sndcpy脚本会自动卸载重装并重新申请PROJECT_MEDIA权限adb 相关报错常见于电脑里同时存在多个 adb 版本参考 docs/FAQ.md 统一版本即可连接偶发失败接收端对 28200 端口的连接等待是 500ms确认设备在线、USB 连接稳定后重试体验不满意官方 README 目前对该方案持保留态度标注目前不推荐使用追求稳定也可以直接给手机配对蓝牙耳机电脑端监听注意这里整个音频传输不需要 root全程依赖标准 ADB 能力这也是它开箱即用的前提。写在最后回到开头的问题投屏没声音是因为声音通道原本就不存在而 QtScrcpy 用 sndcpy AudioOutput这套端上捕获、ADB 转发、本地播放的组合把这条通道以固定 28200 端口、48kHz PCM 的形态补了起来且无需 root、三端通用。现在不妨连上你的设备点一下 start audio——手机里的音乐和提示音几秒内就会从电脑音箱里响出来。【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考