由于vlc无法播放从adb std输出的h264文件,我转而使用ffplay作为流媒体播放器,以下是它成功运行的命令:
adb shell screenrecord --output-format=h264 - | ffplay -
OS X二进制文件ffplay和流媒体屏幕:
谢谢!!
adb shell "while true; do screenrecord --output-format=h264 --time-limit 5 -; done" | ffplay -
可以克服180秒的限制,并在不到5秒的时间内对屏幕方向变化做出反应。 - cbix我不记得我用于初始测试的vlc命令行。 最近我尝试了一些不同的东西,在桌面Linux(Ubuntu 15.10)上。
VLC
如果您只将输出导入vlc --demux h264 -
,似乎可以工作,但是您会逐渐落后。 添加--h264-fps=60
似乎有所帮助,但是您会开始出现错误(“ES_OUT_SET_(GROUP_)PCR过于晚被调用
”)。 添加--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
这个指令mplayer -demuxer h264es -
似乎可以取得最佳效果。它能够快速启动,几乎没有延迟,并且不像vlc那样崩溃。
ffplay
需要一些关注。 - Ciro Santilli OurBigBook.comadb shell
产生了一堆乱码。尝试使用 adb exec-out
,问题得到解决! - bgfvdu3w根据上面的答案,我尝试了所有可能的组合,只有一个组合不会出现很多卡顿、不会停止,并且具有较好的视频质量,使用ffplay:
adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -
尺寸参数可以更改为任何值。
请注意,这仍然远非完美,但可以完成工作,我也尝试使用WiFi,效果足够好。
mplayer
对于低延迟播放,目前mplayer效果最好。
adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
adb shell screenrecord --time-limit=31000 --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
adb shell
命令都会使我的数据损坏。如lord-ralf-adolf在被接受的答案的评论中所述,使用adb exec-out
可以解决这个问题。adb exec-out screenrecord --output-format=h264 --size 540x960 - | ffplay -framerate 60 -framedrop -bufsize 16M -
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 -
https://github.com/Genymobile/scrcpy
它救了我!
我使用mpv获得最佳结果:
adb shell screenrecord --bit-rate=16m --size 540x1140 --output-format=h264 - | mpv --profile=low-latency --no-correct-pts --fps=60 -