Ubuntu作为Miracast发送器/接收器

我找不到关于Ubuntu作为Miracast接收器或发送器的任何信息。

  • 它能工作吗?
  • 是否有硬件要求?
  • 是需要WiFi还是可以通过局域网或其他类型的网络连接工作?
  • WiFi direct似乎是一个必要条件,那它是否足够?(即,如果一个系统支持WiFi direct是否意味着它支持Miracast?)
  • 接收和发送之间是否有支持上的差异?
  • 延迟如何?(与竞争对手,如VNC、商用Miracast设备等相比)
  • 如果使用起来困难,我应该如何实际使用它?

具体来说,我计划与一部Android手机(4.x Jelly Bean)一起使用。


1我一直对DNLA有同样的疑问,目前我只是按照用户221273所描述的使用Chromium插件。然而,几周前我偶然看到一篇文章(现在找不到了),提到了KDE方面对此的一些工作。 - virtualxtc
6个回答

OpenWFD已经停止开发,现在被MiracleCast取代:

MiracleCast是Miracast技术(也称为Wifi-Display(WFD))的开源实现。它基于OpenWFD研究项目,并将取而代之。与OpenWFD相比,我们专注于将其正确且紧密地集成到现有的Linux桌面系统中,而OpenWFD则旨在作为快速原型设计的试验场。

尽管项目本身的名称和起源如此,但它并不仅限于Miracast。我们可以通过仅进行少量额外工作来支持任何类型的显示流传输。然而,由于其知名度,Miracast仍将保持主要的开发目标。

该项目目前仍处于早期开发阶段。目前看来,它似乎可以进行连接,但无法进行实际的视频流传输。

OpenWFD在2014年FOSDEM演示中也展示了流传输功能,但据我了解,MiracleCast是一个“做对”的项目,而他在FOSDEM展示的代码“可能只能在这台机器上运行”。


1你在哪个版本的Ubuntu上编译了MiracleCast?在我的14.04上,我不得不安装libudev-dev软件包,但是我仍然收到No package 'libsystemd' found的错误,并且我已经安装了各种"systemd"软件包,但在配置步骤中没有任何变化。 - NoBugs
一样。无法安装MiracleCast。显然,你需要的是这个(https://github.com/albfan/systemd-ubuntu-with-dbus),但我也无法安装它。 - mpen
尝试从PPA(ppa:thopiekar/miraclecast)安装它在15.10的amd64上,但miraclecast软件包并不存在,显示它没有被编译。希望它能够显示出来,我想测试一下。 - conualfy
10Miraclecast 似乎也已经停止更新。接下来是什么? ^^ - Nobody
3写作时间是最近的提交是在2017年4月,所以Miraclecast似乎还没有停止... https://github.com/albfan/miraclecast - Martin Eden

Miracast 是基于 WiFi Direct 的,据我所知,它需要具备标准的硬件支持的无线网卡。

发送端

我认为 Intel Wireless Display 是将笔记本屏幕发送到 Miracast 接收器的方法。

然而,据我所知,Ubuntu 目前不支持无线显示卡。

接收端

要从Miracast发射器(例如您的手机)接收内容,您可以购买Miracast接收器dongles,它们将输出到任何HDMI输入: Rocketfish™ - Miracast Video Receiver 还有Chromecast,但它仅接收从Chrome浏览器发送的内容,而不是整个显示屏。
我不知道这两个设备是否有Ubuntu驱动程序。如果有人可以确认或建议另一个具有Ubuntu驱动程序的设备,那就太好了。

Intel WiDi不是发送Miracast的唯一方式,它只是从3.5版本开始兼容Miracast。此外,Chromecast运行自己的操作系统,并通过HDMI接口连接到显示器上。Miracast接收器也是如此。 - cmende
6你对这个东西显然比我更有深入的了解。要不要发表你自己的答案呢? - Robin Winslow

针对Chromium的Google Cast扩展在Ubuntu上可用(使用ChromeCast将Chromium页面/浏览内容投放到您的电视上,以720p的分辨率显示,尽管有些延迟)。 不过,它在802.11n网络下也无法很好地投放YUV(视频叠加)空间。(在12.04 LTS和13.10中进行了测试,并使用了最新版本的Chromium) 话虽如此,我从我的Android 4.3(Galaxy Nexus)手机上投放YouTube视频效果非常好。(ChromeCast设备接管了下载+显示功能,因此一旦您点击播放,它就不依赖于您的手机/笔记本电脑了。)

不幸的是,我尚未找到适用于Ubuntu的任何Miracast发送应用程序(例如EZ Air),这导致无法使用来自eBay的HK/中国通用HDMI Miracast设备。
因此,5米长的HDMI电缆(同样来自eBay)仍然是我们用于全屏1080p随需电视的解决方案。


这个解决方案在我的Chromium 62.0.3202.94(Ubuntu版本)上可以直接使用,但只适用于“投射选项卡”。投射整个桌面或其他应用程序会失败。 - mak

你可以尝试一下gnome-screencast项目。更多信息请参考这篇博客文章。该项目最近出现,因此缺乏文档,看起来有些不稳定,主要面向Fedora用户(关于在Ubuntu上安装的问题)。但至少它是朝着正确的方向迈出的一步。

在接收端(sink)上,已经提到的MiracleCast似乎是最好的选择。还有一些工作正在进行中,以支持发送流(source)。 Gnome-Network-Displays(前身为Gnome-Screencast)是一个新的(2019年)努力,旨在支持GNU/Linux中的Miracast流媒体(source)。

我受到了一些启发,决定再深入研究一下。实际上,关于Miracast的信息并不多,但是我找到了几个月前的这篇帖子,声称安卓甚至还没有支持它,所以我猜测它可能还在开发中。
因此,我想稍微自由一些,讨论一下DLNA / UPnP,因为它们几乎是相同的(除了直接连接和精确的屏幕镜像)。
显然,在KDE中有一个名为kio-upnp-ms的媒体KIO-slave,我在这里看到了它的发布公告。
此外,似乎还有相当多的其他UPnP和DNLA选项,例如在这里这里列出的XBMC

此外,在Synaptic中搜索“upnp”将为您提供许多GNOME选项,例如Rygel已经很好地集成在GNOME中并且易于使用。


新一代的Android设备已经支持Miracast,例如Nexus 4在Android 4.2版本中就已经支持。与DLNA最大的不同是Miracast允许屏幕镜像,因此您可以在会议中无线共享屏幕。这是一个非常好的承诺,但可能还为时过早。 - Bachi
哈哈 - 我有一部 Nexus 4;我会尝试让它工作并更新我的答案。 - virtualxtc
手机坏了,但既然这篇文章被编辑过,我猜想有人认为这篇帖子有一定的价值?否则我觉得删除它可能是合适的。 - virtualxtc