it-swarm.com.de

Verwenden von ADB zum Erfassen des Bildschirms

Ich versuche, so schnell wie möglich einen Screenshot des Telefonbildschirms zu erstellen.

adb Shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png         

Es ist jedoch zu langsam und dauert bis zu 3 Sekunden ... Gibt es einen besseren Weg, dies zu tun? Ich beabsichtige, diese Funktion mit einem ungerotteten Telefon zu verwenden.

Was sind die verschiedenen Argumente, die ich für screencap verwenden kann?

Vielen Dank.

BEARBEITEN (zusätzliche Informationen): Ich beabsichtige, diese Methode zu verwenden, um einen Live-Feed des Bildschirms auf meinen PC zu bekommen. Die derzeitige Methode funktioniert jedoch zu langsam. Ich kann adb Shell screenrecord nicht verwenden, da ich während der Aufnahme nicht auf die Videodatei zugreifen kann.

33
user2513924

Damit es funktioniert, @ OSX und Linux

adb exec-out screencap -p > screen.png
82
Diego Plentz

https://stackoverflow.com/a/37191719/75579 Die Antwort funktionierte für mich in Android 7 irgendwie nicht mehr. Also muss ich es manuell machen, also möchte ich es teilen. 


Wie installiert man

  1. Fügen Sie dieses Codefragment in Ihre ~/.bash_profile- oder ~/.profile-Datei ein:

    snap_screen() {
      if [ $# -eq 0 ]
      then
        name="screenshot.png"
      else
        name="$1.png"
      fi
      adb Shell screencap -p /sdcard/$name
      adb pull /sdcard/$name
      adb Shell rm /sdcard/$name
      curr_dir=pwd
      echo "save to `pwd`/$name"
    }
    
  2. Führen Sie den Befehl source ~/.bash_profile oder source ~/.profile aus. 


Wie benutzt man

Verwendung ohne Angabe des Dateinamens:

$ snap_screen
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/screenshot.png

Verwendung mit einem Dateinamen:

$ snap_screen mega_screen_capture
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/mega_screen_capture.png

Ich hoffe es hilft!

** Dies funktioniert nicht, wenn mehrere Geräte angeschlossen sind

8

Sie können die Binärdatei von stdout lesen, anstatt das PNG auf der SD-Karte zu speichern und es dann zu ziehen:

adb Shell screencap -p | sed 's|\r$||' > screenshot.png

Dies sollte etwas Zeit sparen, aber nicht viel.

source: Binäre stdout-daten aus der adb-shell lesen?

4
Jared Rummler

Führen Sie den folgenden Befehl aus, um mit der Aufzeichnung des Bildschirms Ihres Geräts zu beginnen:

adb Shell screenrecord /sdcard/example.mp4

Dieser Befehl beginnt mit der Aufzeichnung des Bildschirms Ihres Geräts mit den Standardeinstellungen und speichert das resultierende Video in einer Datei unter /sdcard/example.mp4 auf Ihrem Gerät.

Wenn Sie mit der Aufnahme fertig sind, drücken Sie im Eingabeaufforderungsfenster die Tastenkombination Strg + C, um die Bildschirmaufnahme zu beenden. Sie können die Bildschirmaufzeichnungsdatei dann an dem von Ihnen angegebenen Ort finden. Beachten Sie, dass die Bildschirmaufnahme im internen Speicher Ihres Geräts gespeichert wird, nicht auf Ihrem Computer.

In der Standardeinstellung wird die Standard-Bildschirmauflösung Ihres Geräts verwendet, das Video mit einer Bitrate von 4 MBit/s kodiert und die maximale Bildschirmaufzeichnungszeit auf 180 Sekunden festgelegt. Führen Sie den folgenden Befehl aus, um weitere Informationen zu den Befehlszeilenoptionen zu erhalten:

adb Shell screenrecord --help

Dies funktioniert ohne das Gerät zu rooten. Hoffe das hilft.

2
Prem

Mit einigen Erkenntnissen aus diesem und einigen anderen Beiträgen habe ich herausgefunden, dass die Methode, die am besten für mich funktionierte, darin bestand:

adb Shell 'stty raw; screencap -p'

Ich habe ein sehr einfaches Python-Skript auf GitHub veröffentlicht, das im Wesentlichen den Bildschirm eines über ADB verbundenen Geräts spiegelt:

https://github.com/baitisj/Android_screen_mirror

2
baitisj

Es tut uns leid, screencap nur einen einfachen Befehl zu sagen, akzeptieren Sie nur wenige Argumente, aber keines davon kann Zeit sparen, hier ist die -h-Hilfeausgabe.

$ adb Shell screencap -h
usage: screencap [-hp] [-d display-id] [FILENAME]
-h: this message
-p: save the file as a png.
-d: specify the display id to capture, default 0.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given, the results will be printed to stdout.

Neben dem Befehl screencap gibt es einen weiteren Befehl screenshot. Ich weiß nicht, warum screenshot aus Android 5.0 entfernt wurde, aber er ist unter Android 4.4 verfügbar. Sie können die Quelle von hier überprüfen. Ich habe keinen Vergleich gemacht, der zwischen diesen beiden Befehlen schneller ist, aber Sie können es in Ihrer realen Umgebung versuchen und die endgültige Entscheidung treffen.

1
alijandro