将windows的显示器作为linux的扩展屏

这里写自定义目录标题

前言

  • 测试的linux系统为ubuntu 18.04
  • 测试的windows系统为win10
  • 将windows的显示器作为linux的扩展屏,需要使用微软的Miracast技术。windows自带就不多说了,linux使用的是这个开源软件albfan/miraclecast
  • 操作分成两个部分,在linux和windows上都要进行配置

Win

  • 打开蓝牙,连接WiFi
  • 进入设置,找到系统=>投影到此电脑
  • 如果其中的选项都是灰色无法设置,可能是没有安装相应的功能,则在设置中搜索可选功能,然后找到“无线显示器”安装即可
  • 若选项可以设置,则根据自己的需求设置
  • 然后打开软件“连接”(可以直接在菜单栏中搜索)

Linux

强烈建议参考官方README设置,下面的方法仅仅是做个记录,操作默认使用root权限

Requirements

  • 首先下载代码

    git clone --depth=1 https://github.com/albfan/miraclecast.git
    
  • systemd: 要求版本>=221,查看方式如下

    dpkg -l|grep systemd
    

    在这里插入图片描述

  • glib: A utility library. Used by the current DHCP implementation. Will be removed once sd-dns gains DHCP-server capabilities. required: ~=glib2-2.38 (might work with older releases, untested…)

  • gstreamer: 运行源码中的res/test-viewer.sh,如果没有安装完全的话会提示类似
    在这里插入图片描述

    Try to install “gst-plugins-bad, gst-plugins-base, gst-plugins-base-libs, gst-plugins-good, gst-plugins-ugly, gst-libav, gstreamer”
    

    但是直接用apt search这些包名可能是找不到的(可能是我用的ubuntu18.04太老了),于是我一个个分开检索没有安装的包

    apt search gst | grep gst | grep plugin | grep -v installed | grep base
    apt search gst | grep gst | grep plugin | grep -v installed | grep bad
    apt search gst | grep gst | grep plugin | grep -v installed | grep good
    apt search gst | grep gst | grep plugin | grep -v installed | grep ugly
    apt search gst | grep gst | grep libav | grep -v installed
    

    根据上述命令的输出来选择需要安装的包,最终我安装了如下

    apt install libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
    

    注意:dbg结尾的不要安装

    然后再次运行源码中的res/test-viewer.sh,全都pass则成功,否则再次检查有啥没有安装

  • wpa_supplicant: MiracleCast spawns wpa_supplicant with a custom config.

    apt install wpasupplicant
    
  • 检查无线网卡是否支持P2P:进入源码中的res文件夹,运行test-hardware-capabilities.sh
    在这里插入图片描述

  • (可选)check: 作者测试的版本是0.9.11

    apt install check
    

Build and install

参考官方文档

  • 安装依赖,ubuntu18.04的如下

    apt install cmake libglib2.0-dev libudev-dev libsystemd-dev libreadline-dev check libtool autoconf
    
  • 然后我选择使用cmake进行build

    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr .. 
    make -j6
    make install
    

    如果报如下错误
    在这里插入图片描述
    则根据issue,在源码的src/shared/CMakeLists.txt后面加上一行target_link_libraries(miracle-shared m)

运行

关于sink和peer,作者在这个issue中有解释:
“in miracast protocol your device can act as source (share a video stream (normally from its screen)) or as sink( receives and shows a video streaming). Both are peers for miracast”

  1. shutdown wpa_supplicant and NetworkManager

    systemctl stop NetworkManager.service
    systemctl stop wpa_supplicant.service 
    
  2. launch wifi control

    miracle-wifictl
    
  3. Enable visibility for other devices

  4. Locate them using scanning

    p2p-scan
    

猜你喜欢

转载自blog.csdn.net/OTZ_2333/article/details/127995968