
笔记本无线投索尼电视:从「投不上」到 118 Mbps 串流
新买的索尼电视,笔记本想无线投上去。网上教程一句话带过:「Win+K 连无线显示」。照做,找不到设备。
折腾一晚上才搞清楚:这不是你操作错了,是这台电视压根没有那个功能。但能用的路有三条,而且效果比 Miracast 好得多。
下面全是实测数据,失败的路也写了,省你一个晚上。
一、先分清两种「投屏」,90% 的教程在这混
| 类型 | 协议 | 用途 | 2020 后索尼 Google TV |
|---|---|---|---|
| 屏幕镜像 | Miracast(Wi-Fi Direct) | 整块桌面实时同步 | ❌ 取消了 |
| 媒体投放 | DLNA | 把视频文件推给电视播 | ✅ 还在 |
| 浏览器投屏 | Google Cast | Chrome 标签页 | ❌ 国行无 GMS |
为什么最新款反而没有
不是索尼砍的,是 Google 从 Google TV 起移除了 Wi-Fi Display 服务。索尼官方文档写得很直白:
Apple devices, Google TV™ models, or 2020 and later Android TV™ models do not support Screen mirroring function — Sony 官方支持文章
索尼社区的工程师说得更露骨:"Google TV will not support Miracast on any TV... This is not a Sony thing, it's a Google TV thing."
原因大致四条:推自家 Chromecast、Wi-Fi Direct 体验差投诉多、镜像可绕开 DRM、P2P/STA/AP 三模共存复杂。
国产电视为什么都有:它们内置了乐播/当贝这类第三方投屏 SDK(AirPlay + Miracast + DLNA 一套全包),不依赖 Google 认证,中国区又没有 Chromecast,不补就卖不动。
自己验证的方法
不用猜,局域网里扫一下就知道电视到底提供什么:
# 发 SSDP 探测,看响应里的 ST 和设备描述
import socket
msg = ("M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\n"
'MAN: "ssdp:discover"\r\nMX: 2\r\nST: ssdp:all\r\n\r\n').encode()
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.settimeout(3)
s.sendto(msg, ("239.255.255.250", 1900))
我这台(BRAVIA 4K AE3 / K-75XR70M2)回的是:
upnp:rootdevice → :39520/description.xml
urn:schemas-upnp-org:service:AVTransport:1 → :39520
urn:schemas-upnp-org:service:RenderingControl:1 → :39520
urn:schemas-sony-com:service:ScalarWebAPI:1 → :20352/sony/ssdp/dd.xml
有 AVTransport + RenderingControl,说明 DLNA 渲染器在;没有 Wi-Fi Display/WFD 相关条目,说明 Miracast 没有。一眼定性。
二、路线 A:DLNA 投视频(零安装)
电视端渲染器名字是 客厅极光TV(dlna)(腾讯 QQLive 随极光 TV 装上的),不是电视型号名,别被搞混。
Windows 操作:
- 资源管理器里右键视频文件
- Win11 先点「显示更多选项」
- 播放到设备 → 选
客厅极光TV(dlna)
优点:不装任何东西、原始画质、能拖电视上的进度条。 局限:只能推文件,不能镜像桌面,不能投浏览器,格式受渲染器限制(mp4/H.264 最稳)。
如果你只是想在电视上看片子,到这一步就够了。
三、路线 B:Sunshine + Moonlight 串流(推荐)
这才是「镜像桌面」的正解,而且延迟比投屏软件低一个数量级。
原理:PC 用 GPU 硬件编码(NVENC/AMF/QSV),电视端硬解,局域网点对点,不经任何第三方服务器。
安装
# PC:官方 MSI,装完是 Windows 服务,自启
Sunshine-Windows-AMD64-installer.msi
# 电视:adb 侧载(或者应用中心找)
adb install -r app-nonRoot-release.apk
Moonlight APK 是通用包,含 arm64-v8a / armeabi-v7a / x86 / x86_64,老电视的 32 位 ABI 也能跑。
配对
首次连接电视上会显示 4 位 PIN,在 Sunshine 网页界面(https://localhost:47990)输入即可。
注意:Sunshine 2026 之后的版本改成了
pairing_id流程,POST /api/pin只发 PIN 会被拒(pairing_id must contain exactly 32 hexadecimal characters)。要先用GET /api/pin拿到待配对列表,再带pairing_id + pin + name提交。
关键:默认画质是个坑
装完直接串,画面会像「隔着毛玻璃」。Moonlight 默认分辨率是 720p,码率是自动估算的 7.3 Mbps。
75 寸 4K 屏上放 720p,糊是必然的。
电视上改:Moonlight → 设置
| 项 | 默认 | 改成 |
|---|---|---|
| 视频分辨率 | 720p | 1440p(或与电脑面板匹配的档位) |
| 视频帧数 | 60 | 60 |
| 视频码率 | 自动 7.3 Mbps | 150 Mbps(滑块拉到底) |
| 环绕声 | 立体声 | 5.1(有回音壁/功放才开) |
实测对比
| 参数 | 改前 | 改后 |
|---|---|---|
| 分辨率 | 720p | 1440p |
| 码率 | 7.3 Mbps | 117.96 Mbps |
| 编码 | HEVC | HEVC |
| 音频 | Opus 48kHz 2ch 96kbps | Opus 48kHz 6ch 1536kbps |
服务端日志实证:
Streaming bitrate is 117964000
Opus initialized: 48 kHz, 6 channels, 1536 kbps (total), LOWDELAY
码率翻了 16 倍,文字边缘立刻清楚。
声音是怎么过去的
Sunshine 安装时会塞一个虚拟声卡 Steam Streaming Speakers,串流期间把系统默认输出切过去,采集后编码送过来:
Capturing audio from sink [virtual-Surround 5.1{...}]
Audio capture format is [F32 48000 5.1]
代价:串流期间电脑本机没声音(声音被抽走了),断开后自动恢复。
开 5.1 的完整链条:Moonlight 请求 5.1 → Sunshine 虚拟声卡变 virtual-Surround 5.1 → 电视解出 PCM 5.1 → 电视音频输出走 HDMI ARC → 回音壁。电视侧可以用 dumpsys audio | grep -i arc 确认输出设备是 hdmi_arc。
⚠️ 片源本身必须真是 5.1。B 站、YouTube 这类是立体声,开 5.1 也还是左右声道有声。
实测踩的坑
- 电视端图标连点会弹菜单。Moonlight 的电视界面里,双击应用图标会打开「恢复串流 / 退出串流 / 查看详情 / 创建快捷方式」,不是启动。点一下就好。
- 电脑睡眠 = 连不上。Sunshine 服务在跑,但机器睡了网络就断。串流前先确认电脑是醒的。
- Wi-Fi 下码率到不了 150。设了 150,实际协商到 118 左右——这已经是 Wi-Fi 的舒适区。想要稳满,电脑也接网线。
- 改了码率不生效? 确认 Moonlight 里的滑块真的拉到底(会显示
150.0 Mbps),不是停在 40。
四、路线 C:一根 HDMI 线
想真 4K 而且不想折腾,这是唯一省事的答案。
| 方案 | 延迟 | 画质 | 成本 |
|---|---|---|---|
| HDMI 线 | 0 | 4K60 无损 | 一根线 |
| 无线串流 | 10~20ms | 1440p/118Mbps(受 PC 面板限制) | 装两个软件 |
无线的价值是「不用接线」,不是「画质更好」。4K 这个需求,有线反而更省。
五、附录:想装第三方 APK?得打通 ADB
国行机器没有 Google Play,装 app 只能侧载。ADB 在 Google TV 14 上有个坎:
USB 调试不会开 5555
开着「USB 调试」也扫不到 5555 端口——这一代机型必须走无线调试:
- 电视连上 Wi-Fi(有线时无线调试开关是灰的/点了弹回,这是 Android 硬限制,必须拔网线)
- 开发者选项 → 无线调试 → 打开
- 电视会显示
IP:端口和 6 位配对码,注意配对端口 ≠ 连接端口
adb pair 192.168.17.106:38185 969424 # 配对端口 + 配对码
adb connect 192.168.17.106:45635 # 连接端口(另一个数字)
adb tcpip 5555 # 之后走网线也能连
重启后失效,而且没法固化
adb shell setprop persist.adb.tcp.port 5555
# → Failed to set property (ro.debuggable=0, SELinux Enforcing)
官方封掉了持久属性。每次重启要重来一遍。
我的解决办法:一个脚本
把「找 IP → 扫端口 → 连接 → 切回 5555」固化成一个命令(扫端口时用 STLS 握手包识别 ADB):
tv-adb # 一把梭
tv-adb status # 只看状态
脚本核心是往每个开放端口发 ADB 的 CNXN 握手包,回 STLS/CNXN/AUTH 的就是 ADB。
六、那些失败的路,也写出来
省你时间,这些我都试过:
❌ 虚拟显示器 + 设主屏
思路:装 IDD 虚拟显示器驱动(Virtual-Display-Driver),造一块 3840×2160 的屏给 Sunshine 抓。
结果:驱动装好了,虚拟屏确实出现在系统里、支持 4K@60。但 Sunshine 的 Desktop 应用只抓主桌面,output_name 配置项完全不认。
把虚拟屏设成主屏 → 笔记本屏幕直接黑了(桌面被搬到一块你看不见的屏上)。这个体验没法用。
而且 Windows 显示拓扑这块,我用 ChangeDisplaySettingsEx 调用全部返回 DISP_CHANGE_BADMODE (-5)——设置界面用的是新的 SetDisplayConfig,老 API 对 IDD 虚拟屏一律拒绝。
❌ Apollo(自带虚拟屏的 Sunshine 分支)
Apollo 是 Sunshine 的分支,卖点就是「串流时自动开虚拟屏、结束后自动还原」,理论上是理想解。
结果:装好了、服务也起来了、端口也对,但 Moonlight 12.2 和 Apollo 0.4.6 的配对协议不兼容:
Warning: Pair attempt failed due to Out of order call to getservercert
Moonlight 显示「配对中」,输完 PIN 依然连不上。要能用就得把 Moonlight 降级到旧版,代价大于收益,最后我把 Apollo 卸了。
顺带一提:Apollo 卸载时会留下自己的虚拟显示驱动
SudoMaker Virtual Display Adapter(oem90.inf),得手动pnputil /delete-driver oem90.inf /uninstall /force才干净。
七、最终配置清单
| 设备 | 装了什么 | 作用 |
|---|---|---|
| 索尼电视 | Moonlight | 串流接收端 |
| Emby for Android TV | 影视库(连自己的服务器) | |
| 音流 / Musiver | NAS 音乐播放器 | |
| SmartTube | 无广告 YouTube(不需要 GMS,国行机器唯一可行) | |
| Aerial Views | 4K 航拍屏保(要 adb 设成默认屏保) | |
| 笔记本 | Sunshine | 串流服务端,服务自启 |
日常使用就三步:
- 电视打开 Moonlight
- 选电脑名
- 选
DESKTOP
结束按遥控器返回。电脑端什么都不用做。
小结
- 最新索尼没有 Miracast,是 Google 移的,不是你买错
- 投视频用 DLNA 就够,零安装
- 镜像桌面用 Sunshine + Moonlight,记得把默认的 720p 改掉
- 想要 4K,插线
- 虚拟显示器 / Apollo 这两条路我替你踩过了,2026 年 11 月这个时间点还不通
暂无评论
