使用adb screenrecord命令通过USB将Android屏幕镜像到PC

jas*_*ang 28 android adb screencast

我尝试过fadden的建议,将Android屏幕镜像到PC,但vlc播放器屏幕没有显示任何内容:

在此输入图像描述

这个函数的正确命令行是什么?谢谢.

jas*_*ang 26

由于vlc无法从adb std输出播放h264文件,我转而使用ffplay作为流播放器,它通过以下命令工作:

adb shell screenrecord --output-format=h264 - | ffplay -
Run Code Online (Sandbox Code Playgroud)

OS X二进制ffplay和流媒体屏幕:

在此输入图像描述

谢谢!!

  • 使用`adb shell'而为true;做screenrecord --output-format = h264 --time-limit 5 - ; done"| ffplay -`克服180秒的限制,让它在<5秒后对屏幕方向的变化做出反应. (8认同)
  • 我如何在vlc中打开它? (3认同)
  • 在Ubuntu上工作很棒,谢谢!! (2认同)
  • 如何在Windows上执行此操作? (2认同)

fad*_*den 18

我不记得我用于初始测试的vlc命令行.我最近在桌面Linux(Ubuntu 15.10)上尝试了一些不同的东西.

VLC

如果你只输出输出vlc --demux h264 -,它似乎工作,但你逐渐落后.添加--h264-fps=60似乎有帮助,但你开始得到错误(" ES_OUT_SET_(GROUP_)PCR is called too late").添加--clock-jitter=0似乎使错误减少了创伤,但它仍然相当混乱.

ffplay

一个简单的ffplay -工作,但似乎需要几秒钟来决定开始,并最终落后于整个时间.

更新 - 2018年1月

使用ffplay -framerate 60 -framedrop -bufsize 16M -给你一个体面的质量,持续相当长一段时间.这是由于以下命令同步帧速率和比特率,因为视频将尝试以30fps播放,使得由于额外的帧,一切看起来/变慢.然后,比特率将帮助保持视频尽可能正确地定时.我发现它在100-1000MS延迟范围内工作 ; 与大多数蓝牙耳机类似.您可能会收到"考虑增加探测"错误,可能会冻结流.最好重新启动screenrecord或尝试追加-probesize 16M

注意:此配置与ffplay一起使用事先管道的以下adb命令.如果您正在运行GPU密集型任务或使用较旧的手机,那么大小1280x720更好.如果您的手机不支持60fps(或者似乎没有以60fps录制),请更改为适当的值,例如30或24.

adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -

mplayer的

该命令mplayer -demuxer h264es -似乎产生了最好的结果.立即开始,非常小的延迟,并不像vlc那样吓坏.

  • 为什么adb shell而不是adb exec-out?adb shell不适用于管道exec-out专门用于管道,它会产生更好的效果 (3认同)

小智 8

根据上面的答案,我尝试了所有可能的组合,只有一种组合不会太滞后,不会停止并且具有不错的视频质量,并且具有ffplay:

adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -
Run Code Online (Sandbox Code Playgroud)

size参数可以更改为任何值。

请注意,这还远远不够完美,但是可以完成工作,我还通过WiFi进行了尝试,它已经足够好了


小智 5

播放器

对于低延迟播放,mplayer 迄今为止效果最好。

adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
Run Code Online (Sandbox Code Playgroud)

注意:上面设置 mplayer 尽快消耗帧。不过,因此,在等待新帧时,播放窗口可能会变得缓慢。

录屏有3分钟时间限制的“功能”。如果您愿意从代码重新编译它,这里有一个很好的链接

重新编译屏幕记录后:

adb shell screenrecord --time-limit=31000  --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
Run Code Online (Sandbox Code Playgroud)