Use adb screenrecord command to mirror Android screen to PC via USB

后端 未结 5 672
半阙折子戏
半阙折子戏 2020-12-07 11:26

I\'ve tried the suggestion from fadden to mirror the Android screen to PC, but the vlc player screen show nothing:

相关标签:
5条回答
  • 2020-12-07 11:49

    Using any of the adb shell commands produced corrupted data for me. Using adb exec-out, as noted by lord-ralf-adolf in a comment on the accepted answer, fixed the problem.

    I used this exact command to get optimal video quality and minimal lag from a Galaxy S6:

    adb exec-out screenrecord --output-format=h264 --size 540x960 - | ffplay -framerate 60 -framedrop -bufsize 16M -
    
    0 讨论(0)
  • 2020-12-07 11:53

    Since vlc can't play the h264 file from adb std output, I turn to use ffplay as stream player and it works via the following command:

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

    OS X binary ffplay and streaming screens:

    enter image description here

    Thanks!!

    0 讨论(0)
  • 2020-12-07 12:07

    mplayer

    For the low latency playback, the mplayer worked the best so far.

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

    Note: the above sets the mplayer to consume frames as soon as possible. Though, as a result, the playback window may be sluggish when waiting for new frames.

    The screenrecord has a 3 minutes time limit "feature". If you feel comfortable with recompiling it from code, here is a good link.

    After recompiling the screenrecord:

    adb shell screenrecord --time-limit=31000  --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
    
    0 讨论(0)
  • 2020-12-07 12:09

    Based on the answers above I have tried every possible combination and there is only one that is does not lag a lot, does not stop and has a decent video quality, with ffplay:

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

    The size parameter can be changed to anything.

    Note this is still far from perfect, but gets the work done and I also tried it over WiFi and it was good enough.

    0 讨论(0)
  • 2020-12-07 12:12

    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.

    Update - January 2018

    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.

    0 讨论(0)
提交回复
热议问题