开启辅助访问
 找回密码
 立即注册

DIY Wifi投屏器的两种方法(Linux,树莓派)

絲絲雨 回答数20 浏览数2252
手机的投屏功能大家都用过,就是打开手机上的网络视频播放器,点击投屏功能,手机上的视频就能投射到电视机盒子或者网络电视机上了,很省事。
冬日的某一天我家突然没有网了,发现手机投屏功能不起作用了。为啥?好奇心驱使着我谷歌了一下,发现原来网络视频播放器并不是真正的将手机上的视频投屏到电视机上,而将手机上网络资源镜像电视机上,何为镜像那?就是手机和电视机都链接到同一台服务器,手机把播放视频的所有的信息都复制一份告诉服务器,服务器就按照这个视频信息(注意是信息)推送视频流到电视机上,所以电视机可以看到和手机一样的视频。这也就解释了为啥没有网点时候投屏功能不起作用了。
上面说道这种不是真正的投屏,真正的投屏应该是把手机上的视频拷贝到电视机上播放。在某宝上搜了一下wifi投屏器,发现很多类似商品。

于是谷歌了一下原理,发现WIFI同屏是一台很成熟的技术了,学名叫“Miracast”也叫“Wifi-Display”,是wifi推出的一台标准协议,是以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的3C设备(如智能手机、电视机、家用投影、电脑等)可透过无线方式分享视频画面。安卓和ios都将此标准加入到了系统当中,所以手机不用修改自动就可以使用此协议。主流的投屏技术有AIrPlay(IOS)、DLNA(索尼、英特尔、微软等发起的一套 PC、移动设备之间互联互通的协议)、Miracast(安卓)。
突发奇想想自个DIY一台wifi投屏器(主要是qiong),搜索了一下实现方法,找到了两种方案:

  • 基于树莓派的Chrome Cast
  • 基于Miracast标准协议
第一种方法必须在手机上安装raspicast,终端设备必须是树莓派
第二种方法则是只要是手机就可以(只测试了安卓手机),终端设备只要是Linux系统就可以。
<hr/>下面开始介绍一下具体实现方法:
基于Chrome Cast

参考网址
前提:必须有一台树莓派(废话)

  • 在树莓派上打开SSH功能



  • 在安卓手机上安装rapicast,需要翻墙,在谷歌play上安装此软件。



  • 将树莓派和手机链接到同一台WIFI中,打开手机上的RaspicastApp,登录SSH,链接到树莓派上。



  • 在github上下载源码,github源码
$ git clone https://github.com/HaarigerHarald/omxiv
$ cd omxiv
$ make ilclient
$ make -j4
$ sudo make install

  • 安装完成后,点击打开手机APP,点击Cast选项,播放视频即可。
附上油管视频能看到小伙伴可以看看。
<hr/>基于Miracast

这个方法才是我想介绍的,这个方法的好处在于不需要其他软件辅助,打开安卓手机中的“多屏互动”按钮即可完成投屏功能。

  • 在github上下载大神写好的源码源码地址
git clone https://github.com/albfan/miraclecast.git

  • 安装依赖,检测环境
  本人使用是ubuntu,在配置之前需要安装一些依赖文件:
- ubuntu-restricted-extras
- gstreamer1.0
- libglib2.0-dev
- libreadline-dev
- libudev-dev
- libsystemd-dev
- libusb-dev
- build-essential测试当前系统是否支持,miraclecast:
确定systemd的版本 :版本应该大于221
确实glb,gstreamer 是否安装成功 执行:
res/test-viewer.sh确定当前系统的wifi是否支持P2P wifi 执行:
res/test-hardware-capabilities.sh将dbus文件复制到dbus 配置中:
cp res/org.freedesktop.miracle.conf /etc/dbus-1/system.d/

  • 编译&安装
$ mkdir build
$ cd build
$ ../autogen.sh g --prefix=/usr
$ make
$ make install

  • 配置udev
在build 文件下执行
$ ../configure --enable-rely-udev运行miracle

  • 关闭网络
$ systemctl stop NetworkManager.service
$ systemctl stop wpa_supplicant.service

  • 启动Daemon
$ sudo miracle-wifid &


  • 启动sinkctl
$ sudo miracle-sinkctl
[ADD]  Link: 3


  • 执行命令
set-mamaged 3 yes这时候打开手机的多屏互动功能就可以搜索到 miracle 设备了,直接点击链接即可实现投屏功能了。
结语:
功能虽然实现了,可是卡要死,i这个就需要后期优化了。
使用道具 举报
| 来自北京 用Deepseek满血版问问看
hgd001 | 来自北京
哇哦 有机会试试 第一个沙发纪念一下[调皮][调皮]
用Deepseek满血版问问看
回复
使用道具 举报
友情提供 | 来自北京
[miraclectl] # WARNING: supplicant: wpa_supplicant or driver does not support P2P (supplicant_status_fn() in ../../../src/wifi/wifid-supplicant.c:1698)

树莓派4上试了下,报这个
回复
使用道具 举报
huangyg1976 | 来自北京
应该是你的wifi不支持p2p
回复
使用道具 举报
bpttwfltbn | 来自北京
There is no wireless devices available 笔记本报错提升找不到无线设备
回复
使用道具 举报
glesdn | 未知
先把wifi 关了,然后重新设置试试。
回复
使用道具 举报
cooldesert | 未知
卡是因为网络原因还是树莓派性能?树莓派4还会卡吗
回复
使用道具 举报
伊索1978414 | 来自四川
有可能是网的问题,还有就是这个程序本身的问题,毕竟是开源的东西,好多地方都没有优化。
回复
使用道具 举报
shitouaaa | 来自广东
补充下。入手了,感觉还行。2k分辨率,操作kodi有明显时延。调低分辨率(720p,1080p)基本就没问题了。
现在720p投屏没问题。但是跟投屏app有关系。爱奇艺的就老卡顿。腾讯没问题
回复
使用道具 举报
zhouyuanhuei | 来自北京
看了半天你们都是往树莓派上投,其实我想要的是树莓派往别的屏幕上投,因为我想买个便携屏贴墙上当智能家居的中控,有办法没
回复
使用道具 举报
123下一页
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影