我已经尝试了fadden将 Android 屏幕镜像到 PC 的建议,但 vlc 播放器屏幕什么也没有显示:
此功能的正确命令行是什么?谢谢。
由于 vlc 无法从 adb std 输出播放 h264 文件,我转而使用 ffplay 作为流播放器,它通过以下命令工作:
adb shell screenrecord --output-format=h264 - | ffplay -
OS X 二进制ffplay和流屏幕:
谢谢!!
我不记得我用于初始测试的 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 -
作品,但似乎需要几秒钟才能决定开始,并最终远远落后于整个时间。
使用ffplay -framerate 60 -framedrop -bufsize 16M -
可以为您提供持续相当长一段时间的体面质量。这是由于以下命令同步帧率和比特率,否则视频将尝试以 30fps 播放,由于额外的帧,随着时间的推移,一切看起来/变慢。然后,比特率将有助于尽可能保持视频正确定时。我发现它可以在 100-1000 毫秒的延迟内工作;类似于大多数蓝牙耳机。您可能会收到可能冻结流的“考虑增加探针大小”错误。最好重启screenrecord或尝试追加-probesize 16M
注意:这个带有 ffplay 的配置适用于预先通过管道传输的以下 adb 命令。如果您正在运行 GPU 密集型任务或使用较旧的手机,1280x720
则更好的建议是尺寸。如果您的手机不支持 60fps(或似乎不以 60fps 录制),请更改直到合适的值,例如 30 或 24。
adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -
播放器
该命令mplayer -demuxer h264es -
似乎产生了最好的结果。立即开始,几乎没有延迟,并且不像 vlc 那样吓坏了。
根据上面的答案,我尝试了所有可能的组合,只有一个不会滞后很多,不会停止并且具有不错的视频质量,带有 ffplay:
adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -
size 参数可以更改为任何值。
请注意,这仍然远非完美,但可以完成工作,我还通过 WiFi 进行了尝试,它已经足够好了。
播放器
对于低延迟播放,mplayer 是迄今为止效果最好的。
adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
注意:以上设置 mplayer 尽快消耗帧。但是,因此,在等待新帧时播放窗口可能会很慢。
屏幕录像有 3 分钟的时间限制“功能”。如果您对从代码重新编译它感到满意,这里是一个很好的链接。
重新编译屏幕记录后:
adb shell screenrecord --time-limit=31000 --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -