尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

UxPlay Linux 投屏:两条命令把 iPhone 画面跑起来

UxPlay Linux 投屏:两条命令把 iPhone 画面跑起来 UxPlay Linux 投屏两条命令把 iPhone 画面跑起来【免费下载链接】UxPlayAirPlay Unix mirroring server项目地址: https://gitcode.com/gh_mirrors/uxp/UxPlay想让 iPhone 的画面出现在 Linux 桌面上UxPlay Linux 投屏就是干这个的它是个 GPLv3 开源的 AirPlay 镜像服务器在 Linux 机器上启动后会出现在 iPhone 的屏幕镜像列表里画面和声音都输出到 Linux 一侧。下面从装到跑走一遍重点讲四个最常见的卡点搜不到名字、连不上、没画面没声音、编译报错以及怎么把画面调流畅。两条命令跑通Debian/Ubuntu 系一条命令装好sudo apt install uxplay终端里直接启动uxplay # 启动后驻留等待客户端Ctrl-C 退出iPhone 端从右上角下滑打开控制中心点屏幕镜像列表里找到形如UxPlay主机名的设备点一下画面就出来了。FreeBSD 用户把第一行换成sudo pkg install uxplay其余完全一样。 先确认手机能看到 UxPlay 的名字最常见的失败是起了但手机上没有 UxPlay。UxPlay 靠局域网里的 mDNS/DNS-SD 服务Linux 上通常是 avahi-daemon向手机广播自己先在服务器端确认它活着systemctl status avahi-daemon # 确认 DNS-SD 服务在运行 avahi-browse -a -t # 应能看到 AirPlay Remote Video / AirTunes 条目两个典型情况avahi-browse里只出现回环lo接口上的条目防火墙把 mDNS 挡住了放行 UDP 5353。服务注册正常但手机就是看不到查路由器。双频路由器的 5GHz 频段有时会丢 mDNS 查询UDP 不重传切到 2.4GHz 或在路由器上固定信道/频宽多数情况就解决了。公司这类不允许跑 DNS-SD 的网络1.73 起还有一个备选方案用蓝牙 LE beacon 广播 UxPlay 的地址来替代发现机制实现在仓库的Bluetooth_LE_beacon/目录里这里不展开。 名字出现了但连不上基本是端口的事手机能看到名字、点了却毫无反应说明服务发现成功但服务器收不到客户端的连接请求几乎总是服务器端防火墙在拦。UxPlay 默认用随机端口防火墙环境下必须用-p固定下来uxplay -p 3500 # 用 TCP/UDP 3500、3501、3502 三个连续端口防火墙里放行它们不想开新号段就用legacy固定端口放行 TCP 7100、7000、7001 和 UDP 6000、6001、7011然后只敲uxplay -p。连接正常后终端会打出一行raop_rtp_mirror starting mirroring——看不到这行就说明握手没走完用-ddebug 输出重跑一次能看到握手卡在哪一步。 连上了却没画面或没声音握手成功但黑屏或无声问题基本在 GStreamer 插件层UxPlay 的解码和渲染全部委托给 GStreamer默认用 autovideosink/autoaudiosink 自动挑插件挑错了就出这种症状。先装齐常用的四组插件sudo apt install gstreamer1.0-plugins-base gstreamer1.0-libav \ gstreamer1.0-plugins-good gstreamer1.0-plugins-bad有画面没声音时先查 AAC 解码器在不在镜像模式的音频是 AAC靠 libav 插件提供gst-inspect-1.0 | grep avdec_aac # 输出为空说明 libav 插件不完整硬件解码配置有问题比如 VAAPI 没配好导致卡死或崩溃时先强制软解把问题排除uxplay -avdec # 强制软件 h264 解码显示端不对例如自动选中的 glimagesink 在你的环境跑不起来显式指定 sinkuxplay -vs xvimagesink # X11 显示Wayland 桌面换成 waylandsink uxplay -as pipewiresink # PipeWire 音频环境显式指定音频输出 把画面调流畅帧率、分辨率、同步策略画面出来后UxPlay Linux 投屏的流畅度由三个参数决定。帧率uxplay -fps 60 # 上限从默认 30 提到 60滚动和滑动更顺这是建议值客户端可低于它分辨率uxplay -s 1920x1080 # 默认已是 1080p高度是决定客户端编码格式的关键参数 uxplay -h265 # 开启 h265/4K(3840x2160)需要 M 系列 Mac/iPad 或较新 iPhone 才能发 4K同步策略1.64 起默认用客户端时间戳做音画同步解码跟不上时会丢帧保音画一致——看视频用这个默认值最好。如果你是拿 UxPlay 当 Mac 的第二块显示器、做实时镜像且不能忍丢帧uxplay -vsync no # 旧的来一帧播一帧模式不丢帧音画可能逐渐漂移只想把音乐投过去不镜像画面的话音频模式下加-ca可以在 UxPlay 窗口里直接显示 Apple Music 的封面。️ 想要最新版本拉源码编译发行版包太旧时就得自己编。Debian 系的依赖sudo apt install build-essential pkg-config cmake git \ libssl-dev libplist-dev libavahi-compat-libdnssd-dev \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev然后git clone https://gitcode.com/gh_mirrors/uxp/UxPlay cd UxPlay mkdir build cd build cmake .. # 想不依赖 X11 库就加 -DNO_X11_DEPSON make sudo make install # 二进制装到 /usr/local/bin/uxplay两类高频报错找不到 libcrypto/libplist/dns_sd 的头文件或链接失败上面某个 dev 包没装全或机器上有多个版本的库。自己编过 OpenSSL 放在 /usr/local 的话export OPENSSL_ROOT_DIR/usr/local再重新 cmakeGStreamer 同理用GSTREAMER_ROOT_DIR。无头服务器不想引入 X11cmake 时加-DNO_X11_DEPSON运行时配-vs 0只出声不渲染画面。想让它常驻后台仓库里带了一个用户级 systemd 服务文件 uxplay.service拷到~/.config/systemd/user/systemctl --user enable uxplay之后登录即自启无需 root。想继续往下读镜像流协议、NTP 心跳和丢包重置逻辑在 lib/raop_rtp_mirror.cGStreamer 视频管线的拼装与各个-vd/-vs选项的落点在 renderers/video_renderer.c。全部启动参数的权威说明在仓库 README 的 Usage 一节uxplay -h输出与之同步。【免费下载链接】UxPlayAirPlay Unix mirroring server项目地址: https://gitcode.com/gh_mirrors/uxp/UxPlay创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表