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

9gm1akwq  于 2022-12-09  发布在  Android
关注(0)|答案(7)|浏览(447)

我已经尝试了从fadden的建议,以镜像Android屏幕到PC,但vlc播放器屏幕显示什么都没有:

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

ttygqcqt

ttygqcqt1#

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

adb shell screenrecord --output-format=h264 - | ffplay -

OS X二进制ffplay和流屏幕:

谢谢!

z0qdvdin

z0qdvdin2#

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

可变长度编码

如果你只是将输出输入vlc --demux h264 -,看起来似乎可以工作,但你会逐渐落后。添加--h264-fps=60似乎有助于这一点,但你会开始得到错误(“ES_OUT_SET_(GROUP_)PCR is called too late“)。添加--clock-jitter=0似乎使错误不那么严重,但它仍然相当混乱。


一个简单的ffplay -可以工作,但似乎需要几秒钟才能决定开始,最终远远落后于整个时间。

更新-2018年1月

使用ffplay -framerate 60 -framedrop -bufsize 16M -可以让你的视频质量持续一段时间。这是因为下面的命令同步了帧率和比特率,否则视频会以30 fps的速度播放,因为额外的帧会使一切看起来/变得更慢。比特率将帮助尽可能保持视频的正确定时。* 我发现它在100- 1000毫秒延迟 ;类似于大多数蓝牙耳机。 您可能会得到一个“consider increase probesize”错误,这可能会冻结流。最好重新启动screenrecord或尝试附加-probesize 16M *

**注意:**此ffplay配置与以下adb命令一起使用。如果您正在运行GPU密集型任务或使用较旧的手机,建议使用1280x720大小。如果您的手机不支持60 fps(或似乎无法以60 fps录制),请更改大小,直到使用合适的值,如30或24。

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

我的播放器

命令mplayer -demuxer h264es -似乎产生了最好的结果。立即启动,几乎没有延迟,并且不会像vlc那样崩溃。

qlvxas9a

qlvxas9a3#

根据以上答案,我已经尝试了每一个可能的组合,只有一个是不滞后很多,不停止,并有一个体面的视频质量,与ffplay:

adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -

size参数可以变更为任何值。
请注意,这仍然是远远不够完美,但得到的工作完成,我也尝试了它通过WiFi和它是 * 足够好 *。

dgsult0t

dgsult0t4#

我的播放器

对于低延迟播放,mplayer迄今为止工作得最好。

adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -

注意:以上设置使mplayer尽快消耗帧。但是,结果是,播放窗口在等待新帧时可能会很慢。
屏幕记录有一个3分钟的时间限制“功能”。如果你觉得从代码重新编译它很舒服,这里有一个good link
重新编译屏幕记录后:

adb shell screenrecord --time-limit=31000  --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
2ledvvac

2ledvvac5#

使用任何adb shell命令都会产生损坏的数据。使用adb exec-out(如lord-ralf-adolfaccepted answer的注解中所述)修复了该问题。
我使用这个确切的命令,以获得最佳的视频质量和最小的滞后从Galaxy S6:

adb exec-out screenrecord --output-format=h264 --size 540x960 - | ffplay -framerate 60 -framedrop -bufsize 16M -
knpiaxh1

knpiaxh16#

我发现,通过以下方法可以实现最低的播放延迟:

adb exec-out screenrecord --bit-rate=64m --output-format=h264 --size=1080x680 - | ffplay -framerate 60 -framedrop -fflags nobuffer -flags low_delay -strict experimental -analyzeduration 100000 -probesize 64 -sync ext -vf setpts=0 -fflags discardcorrupt -

按照How to minimize the delay in a live streaming with ffmpeg

nhn9ugyo

nhn9ugyo7#

我发现了这个软件(适用于Linux、Windows和Mac),它可以让你镜像和控制通过ADB连接的设备:
https://github.com/Genymobile/scrcpy
它救了我!

相关问题