Ubuntu安卓手机投屏

之前还在用windows的时候,360有自带的手机管家可以将手机屏幕投放在电脑屏幕上,而切了Ubuntu之后,这个需求就一直无法实现。

其实解决方案很简单,只需要使用scrcpy框架就可以了,然而如果按照"Ubuntu","安卓手机投屏"这几个关键词去搜,搜出来的往往是不够实用或者是无关的信息,我也是偶然看到微信公众号的推送才知道有这个神器的,用它不仅仅可以实现投屏,甚至可以在电脑上操作手机,结合图像识别与模拟鼠标就可以做一些很有趣的东西出来。

项目地址:https://github.com/Genymobile/scrcpy
教程没有提ADB的安装,我也不知道是因为构建的时候包含ADB还是因为我之前安装过ADB所以没有遇到问题,如果有遇到问题的可以考虑一下是不是没有安装ADB

一、安装

首先需要安装几个必要的依赖:

# runtime dependencies
sudo apt install ffmpeg libsdl2-2.0-0

# client build dependencies
sudo apt install make gcc git pkg-config meson ninja-build \
                 libavcodec-dev libavformat-dev libavutil-dev \
                 libsdl2-dev

# server build dependencies
sudo apt install openjdk-8-jdk

在比较老的Ubuntu版本,如16.04,需要用如下方式来安装meson

sudo apt install python3-pip
pip3 install meson

这里我们使用已经编译好的server,官网教程中也提供了自己编译server的方式,不过这里没有采用,官网教程是:https://github.com/Genymobile/scrcpy/blob/master/BUILD.md

这里我们下载它编译好的jar包:

wget https://github.com/Genymobile/scrcpy/releases/download/v1.9/scrcpy-server-v1.9.jar

如图:

[外链图片转存失败(img-doZrutXk-1562342565921)(./1.png)]

下一步需要克隆整个项目并进入项目目录

git clone https://github.com/Genymobile/scrcpy
cd scrcpy

然后构建项目:

meson x --buildtype release --strip -Db_lto=true
cd x
ninja

[外链图片转存失败(img-vaXZ1YVE-1562342565924)(./2.png)]

这里在运行ninja命令的时候会报错,查看报错内容发现是构建server时出错:

[外链图片转存失败(img-NqOyPMAS-1562342565927)(./3.png)]

不过这不重要,因为之前已经下好了编译好的server。

接下来需要把之前下好的scrcpy-server-v1.9.jar重命名为scrcpy-server.jar并移动到scrcpy/x/server目录下,否则一会运行会报如下错误:

[外链图片转存失败(img-0KBNZX1M-1562342565928)(./4.png)]

二、利用USB调试模式运行

首先连接手机,然后打开USB调试,之后进入scrcpy目录下,可以看到当前目录下有可执行文件run:

[外链图片转存失败(img-5RyoPS0f-1562342565930)(./5.png)]

接下来利用如下命令运行即可:

./run x

运行之后,就可以看到手机界面出现在了电脑屏幕上,这个界面是可以交互的,在这里的操作会同步到手机上:

[外链图片转存失败(img-2XydZ8Eh-1562342565932)(./6.png)]

到这里,我们已经实现了使用USB模式来进行投屏了。

启动时还有很多可选参数,这里可以参考这篇博客,我觉得已经很细致了:

scrcpy - Android无需ROOT的跨平台投屏工具

三、利用无线模式运行

当我以为这个神器已经很NB的时候,对面宿舍的兄弟告诉我他发现这玩意还能无线投屏,只要知道手机的IP地址就能够实现这个功能。折腾了半个多小时之后,我们成功实现了无线投屏功能。

首先需要知道手机的IP地址,这里为了确保电脑能够连接到手机,我用电脑开了一个WIFI,怎么开WIFI可以参考一下这篇博客:信息安全实验:实现一个fake-wifi

手机连接到和电脑相同WiFi之后,就需要找到手机IP了,具体方法每个手机可能不一样吧,我这里华为荣耀4找到高级WLAN设置就能看到IP了(实在不行可以10.42.0.X一个一个ping)。

[外链图片转存失败(img-0ZGs6Wd0-1562342565933)(./7.png)]

可以从电脑ping一下,可以看到是可以ping通的:

[外链图片转存失败(img-KZYR986b-1562342565935)(./8.png)]

前期准备做好了,下一步就是正式的链接了,通过多次的实验验证,我们找到了正确的启动顺序:

1.连接数据线
2.允许USB调试
3.连接电脑相同WIFI
4.找到手机IP

这几步在之前说过了,接下来就是关键步骤

5.

adb tcpip 5555

这样将在手机上开启5555端口:

[外链图片转存失败(img-EEXLhuwf-1562342565935)(./9.png)]

执行这步的时候记得在手机上点击下"确定"。

6.

adb connect 10.42.0.78:5555

依然要在手机上点击"确定"。

此时通过adb devices可以看到adb列表中已经出现了新的设备:

[外链图片转存失败(img-eSzvMHBx-1562342565936)(./10.png)]

7.

拔掉数据线。

8.

adb reconnect offline

这条命令将会强制未授权的设备重新链接。

9.

adb connect 10.42.0.78:5555

最后重新连接一波。

此时再查看所有设备:

[外链图片转存失败(img-XaXXrMak-1562342565937)(./11.png)]

可以看到已经授权成功。

此时可以利用run x再次运行投屏了:

[外链图片转存失败(img-HpomRgd1-1562342565939)(./13.png)]

[外链图片转存失败(img-N8HiTdyn-1562342565940)(./14.png)]

无线投屏的延迟肯定是有的,不过亲测利用手机在四米之内开摄像头传输图像基本上没有延迟,,此时的画面延迟主要是手机性能造成的。

<think>我们正在使用Ubuntu24.04,需要安装和配置功能。通常指将设备(如手机、平板)的幕镜像到Ubuntu电脑上,或者将Ubuntu电脑的射到其他设备(如电视影仪)上。这里我们主要关注两个方向:1.将Ubuntu射到其他设备(例如通过Miracast或Chromecast)。2.将其他设备的射到Ubuntu上(接收端)。根据Ubuntu的版本(24.04)和常见的需求,我们可以使用以下工具:-对于Ubuntu作为接收端(接收手机):可以使用GSConnect(KDEConnect的GNOME版)或者使用Chrome浏览器的接收功能(需要Chrome和相应扩展)。-对于Ubuntu作为发射端(将射到其他设备):可以使用GNOME自带的幕共享功能(需要安装扩展)或者使用第三方工具如Airscreen。然而,Ubuntu24.04使用GNOME桌面环境,默认支持幕共享(作为发射端)但需要配置。同时,作为接收端可能需要额外软件。我将分别介绍两种场景的配置方法:###场景一:将Ubuntu射到其他设备(Ubuntu作为发射端)1.**启用GNOME幕共享**:UbuntuGNOME桌面内置了Vino(VNC服务器)或gnome-remote-desktop,但24.04可能默认未安装或启用。我们可以通过以下步骤设置:-打开“设置”->“共享”->“幕共享”,然后启用共享。-需要设置安全选项:允许远程控制,设置密码等。但是,对于到支持Miracast或Chromecast的设备,我们可能需要使用其他协议。这里推荐使用`gnome-network-displays`应用,它支持将幕通过Miracast或Chromecast协议射到支持这些协议的设备上。2.**安装gnome-network-displays**:```bashsudoaptupdatesudoaptinstallgnome-network-displays```安装后,可以在应用菜单中找到“NetworkDisplays”,打开后搜索可用的设备,连接即可。3.**使用Airscreen(备选)**:如果上述方法不适用,可以尝试使用Airscreen,它是一个开源的接收端,但也可以作为发射端?实际上,Airscreen主要是接收端。所以发射端我们主要使用GNOME内置工具或gnome-network-displays。###场景二:将其他设备射到UbuntuUbuntu作为接收端)1.**使用GSConnect(KDEConnect的GNOME扩展)**:GSConnect可以实现手机幕镜像到Ubuntu,但需要手机也安装KDEConnect。-安装步骤:-首先在Ubuntu上安装GSConnect扩展。打开浏览器,访问[GNOME扩展网站](https://extensions.gnome.org/),搜索“GSConnect”,然后根据网站提示安装(需要安装浏览器扩展)。-或者通过命令行安装:```bashsudoaptinstallgnome-shell-extension-gsconnect```然后重启GNOMEShell(按Alt+F2,输入r,回车)或者注销重新登录。-在“扩展”应用中启用GSConnect。-在手机上安装KDEConnect(Android或iOS应用商店)。-确保手机和电脑在同一局域网,打开手机上的KDEConnect,搜索电脑并配对。-配对成功后,在手机KDEConnect中选择“幕”即可。2.**使用Chrome浏览器接收**:-在Ubuntu上安装Chrome浏览器。-打开Chrome,在地址栏输入`chrome://flags`,搜索“MediaRouter”,将其启用(Enabled)。-然后安装扩展程序“GoogleCast”,可以从Chrome网上应用店安装。-使用:在Chrome浏览器右上角会出现射按钮,点击可以选择“射来源”,然后选择“射桌面”即可接收来自其他设备的?注意:这主要是将Chrome标签页或桌面射到其他设备,而不是接收。所以接收功能可能需要其他方法。3.**使用Airscreen(作为接收端)**:Airscreen是一个开源的接收端,支持AirPlay、Miracast和GoogleCast。-安装Airscreen:可以从其GitHub页面下载安装包:https://github.com/OpenAirscreen/openaire-screen或者使用Flatpak安装(推荐):```bashflatpakinstallflathuborg.openaire.AirScreen```然后运行Airscreen,它会启动一个服务,手机就可以搜索到Ubuntu作为接收设备。4.**使用Ubuntu自带的幕共享作为接收端?**:默认情况下,Ubuntu幕共享是作为VNC服务器(发射端),而不是接收端。所以我们需要其他工具来接收。###总结步骤(推荐):根据上述,我们分场景推荐:**将Ubuntu射到其他设备(发射端)**:-安装`gnome-network-displays`:`sudoaptinstallgnome-network-displays`-打开“NetworkDisplays”应用,搜索设备并连接。**将其他设备射到Ubuntu(接收端)**:-使用Airscreen(支持AirPlay、Miracast、GoogleCast):```bashflatpakinstallflathuborg.openaire.AirScreen```安装后运行,然后在手机功能中搜索设备。-或者使用GSConnect(仅支持KDEConnect协议的手机,如Android手机):```bashsudoaptinstallgnome-shell-extension-gsconnect```安装后启用扩展,手机安装KDEConnect并配对,然后使用“幕”功能。###注意事项:-确保设备在同一个局域网内。-防火墙设置:可能需要开放相关端口(例如5353/UDP用于mDNS,7000,7100等端口用于AirPlay)。如果遇到问题,可以暂时关闭防火墙测试:```bashsudoufwdisable```测试后再启用:```bashsudoufwenable```-Airscreen在运行时可能会在系统托盘显示图标,点击可以查看状态。以上步骤在Ubuntu24.04上应该有效。由于系统版本较新,部分软件可能还在适配中,如遇到问题可查看软件官方文档。§§相关问题§§1.如何解决Ubuntu时的延迟或卡顿问题?2.除了Airscreen,还有哪些支持多协议的接收软件?3.如何配置防火墙以允许流量?4.在Ubuntu上使用功能时如何解决声音问题?</think>### 如何在 Ubuntu 24.04 上安装和配置功能 Ubuntu 24.04 支持多种方案,以下是两种主流方法的详细步骤(推荐优先使用 GNOME Network Displays): --- ### 方法一:使用 GNOME Network Displays(推荐) **功能**:将 Ubuntu 射到支持 Miracast/Chromecast 的设备(如电视影仪) ```bash # 1. 安装必要组件 sudo apt update sudo apt install network-displays -y # 核心服务 # 2. 安装图形界面管理工具(可选但推荐) sudo apt install gnome-network-displays -y # 3. 重启后操作: # - 打开应用菜单搜索 "Network Displays" # - 点击扫描设备 → 选择目标设备连接 ``` **特点**: - 原生集成 GNOME 桌面,延迟低[^2] - 支持 Miracast/Chromecast 协议 - 可通过 `Alt+Ctrl+D` 快速打开应用界面[^2] --- ### 方法二:使用 GSConnect(手机→电脑) **功能**:将 Android/iOS 幕镜像到 Ubuntu ```bash # 1. 安装扩展 sudo apt install gnome-shell-extension-gsconnect -y # 2. 启用扩展 gnome-extensions enable gsconnect@andyholmes.github.io # 3. 手机端操作: # - 安装 KDE Connect(应用商店下载) # - 确保手机与电脑同网络 # - 配对设备 → 选择 "幕" ``` --- ### 关键配置 #### 防火墙设置(确保设备发现) ```bash sudo ufw allow 5353/udp # mDNS 协议 sudo ufw reload ``` #### 声音同步(如果无声音) ```bash # 安装 PulseAudio 模块 sudo apt install pulseaudio-module-raop -y pactl load-module module-raop-discover ``` --- ### 故障排查 | 问题现象 | 解决方案 | |---------|----------| | 设备扫描失败 | 检查防火墙设置 → 重启 `network-displays` 服务 | | 卡顿 | 降低分辨率:`Settings → Displays → Resolution` | | 手机无法发现电脑 | 在 KDE Connect 中手动添加 IP 地址 | > **提示**:按 `Alt+Ctrl+L` 可快速锁定幕防止误操作[^2] --- ### 替代方案 - **Airscreen**(多协议支持): ```bash flatpak install flathub org.openaire.AirScreen ``` - **Scrcpy**(安卓控制): ```bash sudo apt install scrcpy -y # 需 USB 调试模式 ```
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值