I've tried the suggestion from fadden to mirror the Android screen to PC, but the vlc player screen show nothing:
What would be the correct commands lines for this function? Thanks.
I don't remember the vlc command line that I used for the initial testing. I've tried a few different things recently, on desktop Linux (Ubuntu 15.10).
VLC
If you just pipe the output into vlc --demux h264 -
, it appears to work, but you get gradually farther behind. Adding --h264-fps=60
seems to help that, but you start getting errors ("ES_OUT_SET_(GROUP_)PCR is called too late
"). Adding --clock-jitter=0
seems to make the errors less traumatic, but it's still pretty messed up.
ffplay
A simple ffplay -
works, but it seems to take a few seconds to decide to start, and ends up lagging well behind the entire time.
Using ffplay -framerate 60 -framedrop -bufsize 16M -
gives you a decent quality that lasts for quite a while. This is due to the below command that synchronises the framerate and bitrate as the video will otherwise be trying to play at 30fps making everything look/get slower over time due to the extra frames. The bitrate will then help keep the video properly timed as best as possible. I've found it works within a 100-1000MS delay; similarly to most Bluetooth headsets. You might get a "consider increasing probesize" error that may freeze the stream. It's best to restart screenrecord or try appending -probesize 16M
Note: This configuration with ffplay works with the following adb command piped beforehand. If you're running GPU intensive tasks or using an older phone, a size of 1280x720
is a better recommendation. If your phone doesn't support 60fps (or doesn't seem to record in 60fps) change until appropriate with values such as 30 or 24.
adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -
mplayer
The command mplayer -demuxer h264es -
seems to yield the best results. Starts immediately, very little delay, and doesn't freak out like vlc.