华为投屏(华为投屏原来还是用的标准Miracast技术?)
荣耀智慧屏发布以来,投屏成了热点。后来华为开发者大会重提投屏,并且提出一个“分布式”系统,“软总线”的概念。其实我本来并没怎么关注华为这个投屏,主要是看了发布会上的演示,感觉延迟和流畅度跟我想象的相去甚远。直到有一天我看了一些上手和评测视频,发现评论区热评频繁出现这类言论:“这就是分布式系统,软总线的作用”“这是鸿蒙分布式系统的优势,安卓做不到”。然后emui10上面华为又升级了原来的一碰传功能,现在可以一碰投屏,将手机的画面投到电脑还能在电脑上操作手机。又有人出来说了:“这是内置鸿蒙内核的才能做到的,分布式系统,软总线的作用”
这不巧了吗,我就喜欢搞点探究真相的事,你们成功勾引到了我的兴趣。
首先说智慧屏的投屏。华为手机贴一下智慧屏遥控器上的NFC标签后手机会打开手机投屏。扫描到的投屏目标是Miracast设备。
https://att.xiawai.com/data/attachment/forum/202101/08/fgbieixx5ia48132.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
这和去设置里面手动打开投屏扫描到的投屏目标是一样的。
https://att.xiawai.com/data/attachment/forum/202101/08/nltviawxjxt48134.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
所以关于智慧屏的投屏问题没有什么疑问了,这个投屏就是标准的Miracast技术。“分布式”系统,“软总线”以后就不要传播了,造谣传谣500份是要负责任的。
他的优点是把一个传统的功能单独提出来放在你眼前,以前你甚至不知道手机还有这样的玩法,现在有人提醒你:客官,来试试吧。还有一点,在手机上打开自带相册看照片的时候投屏会暂停并且切换到DLNA投屏。就是说手机把你正在看的照片通过DLNA发送到电视,然后电视把照片全屏打开。我是怎么发现的呢?当时我要用一个分辨率测试图瞧瞧投屏的画质和分辨率,结果发现电视上显示的图片竟然是4K全分辨率的。临时换用第三方app打开测试图才以投屏的方式呈现在电视上。
https://att.xiawai.com/data/attachment/forum/202101/08/d43542500ck48135.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
根据显示效果可以判断投屏分辨率应该是720p。跟我自己的手机投屏比了一下,分辨率一样画质差不多。
看此文的人应该在关心延迟如何。我用秒表法实测了一下延迟数据,手机上开秒表滚动并且投屏,然后任意时间点拍个照,手机上显示的时间减去电视上显示的时间就是两边的延迟了。
https://att.xiawai.com/data/attachment/forum/202101/08/qxs1falg2f548136.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
mate30 pro投屏的延迟是大约85ms,P30延迟大约120ms。
P30系统还是emui9,所以同条件下mate30 pro的emui10投屏延迟提升了大概35ms。但是这个秒表画面只有很小一部分在动,其他都是静止的。我发现在复杂的画面下情况有所不同,比如在桌面左右滑动。延迟更高一些,并且好像电视端的帧率也明显下降了,感觉卡卡的。
我在科技美学的视频里找到了一个荣耀智慧屏发布当时的现场演示。视频里的投屏延迟是5帧左右,也就是大约166ms(5/30s)。
https://att.xiawai.com/data/attachment/forum/202101/08/fw1kvor1ogx48137.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
当时用的手机的系统肯定也是emui9,所以总之emui10投屏延迟应该是有比较明显提升的。原理我推测是华为自己重新实现了Miracast的手机端,或者重新实现了部分组件来替代原生安卓自带的开源组件。
Miracast无线显示在系统的逻辑中是一个虚拟显示器,系统像操作一台真实显示器一样把显示数据丢过去就不管了。Miracast组件拿到数据先缓存一下,然后调用编码器压缩成h.264,再缓存起来,然后再把h.264数据流打包通过Wi-Fi Direct发送到接受端。感觉这个流程可优化空间很大,能减少一步缓存延迟就能明显降低,然后优化一下编码器工作流程提高编码实时性又能降低延迟。
已经跑题了,总结就是华为手机投屏智慧屏仍然是采用标准的Miracast和DLNA,并不是一些传说中的那种“分布式系统”,“软总线”之类的概念。
接下来再说说华为笔记本电脑和手机的一碰传的升级版。首先明确一下这个不是Miracast,但很可能和Miracast有千丝万缕的渊源(后面会细讲)。
大多数人都不知道其实windows10自带Miracast投屏,可以向电视投屏也能作为接收端接收投屏。按组合键Win+P就会弹出这个界面,点“连接到无线显示器”就能投屏。不过实际用起来体验很遭,延迟1秒谁能忍?用来放PPT、视频还是凑合用的。
https://att.xiawai.com/data/attachment/forum/202101/08/ogtpfmuveab48138.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
要作为接收端打开开始菜单中的“连接”APP即可,电脑硬件支持的话手机就能搜到这台电脑。
https://att.xiawai.com/data/attachment/forum/202101/08/ulo4ip50krh48139.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
我在试用mate30 pro投屏到电脑的时候发现我孤陋寡闻了,原来Miracast投屏到电脑是可以操作手机的。鼠标键盘都可用,但触摸不行。虽然可操作,但是投屏画面帧数又低延迟又高,其实完全不可用。
这说明windows10 这个4年前发布的操作系统已经是个分布式操作系统,具备软总线能力了(扯淡~)。
我查了一下《Wi-Fi Display Technical Specification》(Miracast的官方标准文档),原来这个技术本来就设计了User Input Back Channel(UIBC:用户输入反向通道),专门用来支持外设设备,典型的就是鼠标键盘触摸屏之类。这里不能用触摸屏操作手机并不是因为windows10不支持,而是手机端不支持,所以连接建立时双方协商的控制方式就不包括触摸屏。我搜索发现windows10 mobile手机通过Miracast连接windows10是可以用触摸屏的。
https://att.xiawai.com/data/attachment/forum/202101/08/55dhmztfio048140.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
但是华为的一碰传的升级版功能要更多,控制手机可以用鼠标键盘,可以用触摸屏,可以同步剪贴板,可以拖拽文件图片等等。Miracast只有一个UIBC通道恐怕不足以实现这么多功能。我前面说一碰传的升级版可能和Miracast有渊源。
猜测一种可能是华为的这一套功能其实是封装了Miracast实现的。就是说图像传输和控制回传这些功能仍然是借助Miracast的协议,而其他Miracast有心无力的功能是另外一个独立的私有协议负责。
另一种可能就是华为参照Miracast的协议自主实现了一整套私有协议。Miracast实际是基于Wi-Fi Direct的一个软件应用,他并不涉及硬件底层,不需要硬件层面有专门的设计。所以第三方是可以基于Wi-Fi Direct实现类似Miracast的功能。虽然Miracast普及率很高,是个手机平板都支持华为投屏,但标准宽松实际上大家也只是能互相投屏罢了,并没有能充分发挥他的潜力。为了不出现兼容性问题大家只支持最基本最稳妥的功能,于是使用起来就非常糟糕——延迟大、画质差、分辨率低、帧率低。但是私有协议就没那么多束缚了,不需要考虑不同厂商的兼容性,只需要针对少数设备优化,还能实现更多标准中没有的功能。
另外,这个一碰传的升级版是不能Miracast共存的。如果你正在用另一个手机通过Miracast连接了电脑,此时使用一碰传投屏的话Miracast会被强制断连。然后重新打开windows10 的“连接”APP会提示电脑不支持Miracast,当然他也确实不支持Miracast了。
https://att.xiawai.com/data/attachment/forum/202101/08/pp3e4pvndzs48141.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
这也是我猜测华为一碰传封装了Miracast的原因。Miracast是个Wi-Fi Direct应用,一碰传也是Wi-Fi Direct应用那他们为什么不能共存呢?chrome浏览器和firefox浏览器会因为什么原因不能共存?只有他们共用了某个需要独占的组件的时候才不能。
好像又跑题了华为投屏,再次总结华为手机一碰传投屏到电脑仍然不是一些传说中的那种“分布式系统”,“软总线”之类的概念。它只是一个基于Wi-Fi Direct的应用(软件)。虽然Miracast也能做到投屏和反向控制手机,但华为的这个应用和emui10深度整合所以它能实现Miracast做不到的功能。
番外:
我前面说过Miracast手机投电脑的体验很差,因为我自己的手机电脑这样用起来就是体验非常差的。在试用华为手机和华为笔记本的使用Miracast投屏的时候也是一样的感觉。我做了一个GIF图代替视频,稍微展示一下。
https://att.xiawai.com/data/attachment/forum/202101/08/3srl52gtp0e48142.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
正当我以为胸有成竹觉得意料之中的时候我又试用了一下隔壁家的:
https://att.xiawai.com/data/attachment/forum/202101/08/f011hg1vxkd48143.jpg
https://att.xiawai.com/data/attachment/forum/202101/08/jtkoijxbaqa48133
一直都在体验糟糕的感觉,突然看到如此正常的画面竟然是一种行云流水的顺畅感。实际画面延迟并不低(大概150ms~200ms)难得的是60fps的帧率,而且不掉帧。之前的体验糟糕就是主要由疯狂掉帧带来的,如果不掉帧哪怕30fps的帧率也不会觉得难受。我还以为自己已经对Miracast略知一二,这才明白我其实一无所知。
以上内容就是华为投屏(华为投屏原来还是用的标准Miracast技术?)的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
页:
[1]