用串流技术实现电脑投屏到电视
简介
现在想在电视上看剧,还是有点麻烦的,一般就算你有爱优腾的vip会员,没有电视上的vip会员,也没法投屏到电视上看;想把手机上的资源投屏到电视,一般也会被限制。
个人目前习惯的解决方式是,在电脑上找资源,想办法投屏到电视上看,核心需求就是:pc(windows)投屏到电视(基本是安卓)。
在前一篇中,简单介绍了投屏相关协议,本篇介绍下如何用串流技术实现这个效果。
串流本身不是用于这个目的,主要是用于游戏的,简单来说,你想玩电脑上的游戏(如steam),必须得坐在电脑面前吧,但要是电脑在书房,椅子不舒服,你觉得在客厅的沙发上坐着玩多好啊,反正客厅有电视嘛,屏幕还大。
但是,电脑上的游戏,要想在客厅电视上展示游戏画面、播放游戏音乐,怎么才能做到呢?
串流技术就可以,据我了解,串流技术相当于在电脑上捕获显卡上的视频流、声卡上的音频流,该技术类似于tcpdump这种直接在网卡上进行抓包的技术。捕获到这些音视频流后,会通过推送给客户端的方式,传输给客户端。这里的客户端就可以是远程的机器(不管是局域网还是外网,只要网络链路是通的就行),远程机器再将这些音视频流给渲染出来,我们就能够在远程机器上看到游戏画面、听到游戏音乐了。
其实,这就实现了我想要的投屏效果了,但是,对于它本身的用途来说,还欠缺了一环,玩游戏不是看游戏,我们如何控制游戏中的角色呢?这就需要一个反向的链路,比如,我们可以在电视上接入一个游戏手柄,游戏手柄的指令,是输入到电视的,电视通过前面那条通信链路,将控制指令传回服务端(指串流服务端:电脑),这样,电脑也就收到了手柄指令,这样也就可以顺畅玩游戏了。
完整步骤
概要
上面我介绍串流技术的时候,实际上说了,电脑端负责音视频流的发送,电视端负责接收。发送和接收,并不是电脑电视本身就有的功能,需要借助于两款软件。
电脑上的服务端软件:sunshine(阳光),官网:https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/overview.html
电视上的客户端软件:moonlight(月光),官网:https://moonlight-stream.org/
我其实是参考了这篇:https://mp.weixin.qq.com/s/CjjRFbhxbj_MhjJRmgzsaw,写得很棒,大家也可以直接参考这个(他里面是sunshine的pc端 + ios手机的客户端)。
我呢,主要是sunshine的pc端 + moonlight的电视客户端(电视是安卓的,也就是moonlight安卓端)。
sunshine安装
https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/overview.html
安装完成后,右下角就有sunshine的图标,右键open sunshine,就会在浏览器打开一个ui页面,会提示设置一个密码:
下面可以修改为中文,改了要apply,并重启:
这样就算是就绪了。
moonlight
官网:https://moonlight-stream.org/
如果安卓端(电视)是没有root的话,记得下载非root的版本,我这边下载的是:app-nonRoot-release.apk
安装apk到电视端
目前对我来说,最省事的安装方式,就是从电脑上安装apk到电视,我采用的是adb安装的方式。
adb是啥呢:
ADB(Android Debug Bridge)是一种命令行工具,用于在开发者电脑与Android设备之间建立通信。它是Android SDK的一部分,常用于设备调试、应用管理、系统操作以及文件传输等任务。通过ADB,开发者可以执行很多Android设备的操作,而不需要实际在设备上进行手动操作。
下载、安装adb
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
然后将这个加入到全局变量,比较方便,这个参考网上吧:https://blog.csdn.net/g984160547/article/details/142358129
打开电视的adb开关
注意哈,我的小米电视每次重启,adb开关都会被关闭,大家要注意自己的电视是否有类似情况。
要想用adb.exe去连接电视,需要电视允许adb工具连接,这块呢,可以参考如下:
https://www.znds.com/tv-1251785-1-1.html
或者直接小红书搜索吧。
我的小米电视,大概如下步骤:
-
在设置-关于里找到产品型号,并多次点击产品型号,直到提示已处于开发者模式
-
在设置-账号与安全中会出现ADB调试开关,选择允许
查看电视的ip地址
这个在电视的网络中查看就行了。
pc上使用adb安装apk
cmd中:
adb connect 192.168.31.xx(电视ip)
要是连不上,要看看是不是电视重启后,adb开关又关闭了
安装:
adb.exe install xxx.apk(完整路径或相对路径均可)
moonlight电视端连接sunshine
打开moonlight后,我记得会自动搜索sunshine服务端,如果没有,手动添加即可(ip即为电脑的局域网ip)。
此时,会弹窗,里面有个4位数的密码,然后到电脑上的sunshine,打开ui界面,pin中输入密码即可。
此时,串流就完成了,可以发现,pc上显示什么,电视上就是什么。
额外补充
当贝市场
可以下载个当贝市场pc版,再在电视上装一个,然后我记得就可以直接用当贝市场pc版本,传输apk到电视上了。
如具体电视:https://www.znds.com/jc/list/78.html
其他软件
下面这种方式我没尝试:
https://mp.weixin.qq.com/s/i4u1D9T12lsBTqAI_VfWvw
总结
本篇大概讲了下串流技术的关键软件及如何搭建,大家可以试试。