宅科技 - 科技,宅出新生活

搜索
热搜: 活动 交友 discuz
如果你还没有论坛的账号,赶快注册吧!
立即注册

合作站点账号登陆

快捷导航
查看: 1150|回复: 1

投屏软件的原理是什么?它为什么比用 adb 快许多?

[复制链接] [提交至百度]

93

主题

96

帖子

1952

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1952
发表于 2018-5-8 09:34:33 | 显示全部楼层 |阅读模式
扫码领红包
试过用 adb 操作手机截图和点击,延迟都挺大的,但是投屏软件的按键几乎可以实现实时响应。
我觉得投屏软件的底层实现应该还是用的 adb,但是它是如何做到那么快的呢?
或者其不是靠 adb 实现的,那它的原理是什么呢?

回复

使用道具 举报

93

主题

96

帖子

1952

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1952
 楼主| 发表于 2018-5-8 09:35:54 | 显示全部楼层
网上看别人回复,五花八门

mirrorcast、mirrorlink、vnc 了解下?

    2


blackbbc   4 天前
想知道,最近在研究手机投射到电脑上吃鸡的东西
做过 benchmark
tc games 的延迟在 400ms 左右
scrcpy 的延迟在 100ms 左右
目标是降低到 30ms 以内

    3


youstu   4 天前
主要的应该都还是传输延迟吧,chrome 上有个插件,叫 vysor,也是通过 adb 协议进行远程操作,如果是数据线直连,感觉延迟也很小。

    4


clouduan   4 天前
@youstu 是的我后来就是用的 vysor...

    5


xomix   4 天前
不是,我最早看到投屏技术的时候应该是 intel 的 widi,当然还有 nvdia 的自带无线网卡的显卡。

接下来 Linux mac windows 平台上各自衍生出了自己的投屏技术,再接下来 N A 两家显卡公司也做出了自己的对应技术。

不管这个技术名称叫什么平台在哪里,他都是讲当前系统运行的状态转换成视屏流发送出去的技术。

那这样就能很快明白为什么他比 adb 快了,adb 是可以在投屏端操作的,因此是双向的,无线投屏则是单向的。

    6


siknet   4 天前 via iPhone
那么问题来了,想要把电脑上的操作通过安卓盒子投射到电视上,哪家 APP 最顺畅?

    7


TestSmirk   3 天前
Android Studio 中的 adb 是 1:1 传输,就是说 2k 屏幕的手机截图下来也是 2k.录屏也是,不过录屏可以通过`-size`设置分辨率
投屏的话一般就是几种协议 DLNA,Miracast,无非就是在 WLAN,上封装的一层.
楼上说的 vysor 和 airdroid 类似,就是降低分辨率(480X800 或者更低)这种,实现高速无延时.

    8


busfool   3 天前
我也不知道
我看过 adb 底层的 framebuffer 命令,实现出来比较慢。

    9


hicdn   3 天前
@siknet 用 chromecast 可以用 chrome 投射桌面,很流畅。
乐播投屏,同时支持 DLNA 和 AirPlay,Mac OS 可以直接选乐播的 AirPlay 输出图像+声音。

    10


siknet   3 天前
@hicdn 乐播蛋疼啊,飞讯 T1 内置了这个,以前还正常,我前天清空了 APP 的数据之后,电脑 DLNA 过去的画面左上角居然有水印!!!四个字:乐播投屏

疯了,好像还没见别人说过这个,折腾了半天,只能强顶着看完 WW S2E02

    11


hicdn   3 天前
@siknet 没看到过水印,你卸载从网站下载 apk 安装试试

    12


qq471847975   3 天前 via Android
usb 线带宽有限,5G 无线最好了

    13


siknet   3 天前
@hicdn 内置的。。。不 root 没法卸载,连禁用都不行,所以想找个替代品

    14


zhaohui318   3 天前   ♥ 2
https://developer.android.com/reference/android/media/projection/MediaProjection

https://github.com/JakeWharton/Telecine

仅供参考

    15


beginor   3 天前 via Android
搭各位老司机的车,求一款能够完美原生 Miracast 接收的 app, 乐播投屏没声音, 而且不是原生 Miracast。

Windows 10 自带了 Miracast 接收, 堪称完美。

    16


somebody   3 天前   ♥ 3
这里有个开源的实现,效果很好,可以看下实现 https://github.com/Genymobile/scrcpy

    17


gam2046   3 天前
@somebody 似乎很好,不过试了试手头的两个设备都以不同的错误告终

华为 EMUI [API 22]
小米 MIUI [API 26]

    18


nicevar   3 天前
情况不一样的,adb 截图默认没有优化处理,截图完成之后直接把 png 拉过来,那么大的图片当然慢,投屏的时候无论是截屏还是传输都是有优化处理的,你 pull 一张 png 的图片时间够投屏的时候传很多帧了

    19


applehater   3 天前
@beginor 好像现在很多手机都不支持有线视频输出,比如我看黑鲨手机就完全看不到视频输出的介绍

    20


jinyang656   3 天前   ♥ 1
scrcpy 基于 adb, 延迟已经很不错了

    21


zjb861107   3 天前 via iPhone
minicap 了解一下

    22


somebody   3 天前   ♥ 2
@gam2046 我试过荣耀 V10(API 26 ),小米 Note( API 23 ),没有问题

大概看了下 scrcpy 的实现,启动时 push 一个 apk 到手机的 /data/local/tmp/scrcpy-server.jar ,启动 com.genymobile.scrcpy.Server。

Server 反射调用隐藏的 android.view.SurfaceControl 类的方法,获取屏幕画面应该是 SurfaceControl.createDisplay/setDisplaySurface/setDisplayProjection 这一组方法。画面输出到 MediaCodec 提供的 Surface,Codec 使用 avc 编码后的视频流通过 socket 传输到 PC 端展示,PC 端使用 libsdl 作为 UI toolkit。所以并不是使用 adb 截屏或录屏

    23


Bryan0Z   3 天前 via Android
@blackbbc 学到了,一直用的 tc,原来还有更好的

    24


tonyaiken   3 天前
@somebody 谢谢分享,很好用

    25


JJFJJ   3 天前
@bfdh miracast

    26


somebody   3 天前 via Android   ♥ 2
@somebody scrcpy 的作者详细说明了他的设计和实现,作者水平很高,代码质量也不错,scrcpy 是个很好的学习项目

https://github.com/Genymobile/scrcpy/blob/master/DEVELOP.md

    27


clouduan   2 天前 via Android
@somebody 感谢

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信公众号
微信扫码关注,
回复“领取金币”
每周抽取5位
会员奖励500金币

手机版|小黑屋|网站地图|宅科技 ( 粤ICP备15107403号

GMT+8, 2019-6-19 13:18 , Processed in 0.764201 second(s), 31 queries .

Copyright © 2016 宅科技 | 智能终端极客社区

Powered by Discuz! X3.2 Licensed

快速回复 返回顶部 返回列表