Video vom Android-Bildschirm aufnehmen

195

Vergessen Sie Screenshots, ist es möglich, ein Video der laufenden Anwendung in Android aufzunehmen? Verwurzelt oder nicht verwurzelt, es ist mir egal, ich möchte mindestens 15 fps.

Update: Ich möchte keine externe Hardware. Die Absicht ist es, es perfekt portabel zu machen und jedes Bild wird unter Android OS erfasst. Wenn es die Grenzen der App SDK überschreitet, bin ich bereit, Änderungen auf Betriebssystemebene vorzunehmen, aber ich würde einen Ausgangspunkt benötigen.

Taranfx
quelle
Ich sehe völlig, was hier gesagt wird. Es scheint, dass der Emulator die Funktion haben sollte, den aktuellen Bildschirm auch in eine Videodatei umzuleiten. Ich würde eine solche Funktion lieben, damit ich informative Videos meiner Spiele und Apps erstellen kann.
Robert Massaioli
1
Hast du eine Lösung dafür? Wenn ja, teilen Sie uns dies bitte mit. Ich muss auch Video von Android-Bildschirm kaputieren.
Deepa
@deepa Nein, es gibt keinen guten Weg, dies zu tun.
Taranfx
Überprüfen Sie dieses Projekt: sourceforge.net/projects/ashot
Nirmal Patel
Ist es möglich, aus dem Hardware-Bildschirmpuffer zu lesen?
mP.

Antworten:

243

Android 4.4 (KitKat) und höhere Geräte verfügen über ein Shell-Dienstprogramm zum Aufzeichnen des Android-Gerätebildschirms. Verbinden Sie ein Gerät im Entwickler- / Debug-Modus, auf dem KitKat ausgeführt wird, mit dem Dienstprogramm adb über USB und geben Sie Folgendes ein:

adb shell screenrecord /sdcard/movie.mp4
(Press Ctrl-C to stop)
adb pull /sdcard/movie.mp4

Die Bildschirmaufnahme ist auf maximal 3 Minuten begrenzt.

Referenz: https://developer.android.com/studio/command-line/adb.html#screenrecord

Joe Fernandez
quelle
gibt mir eine Antwort wie Screenrecord: nicht gefunden adb ist veraltet warum?
Gift
1
Klingt so, als ob Ihr Android SDK veraltet ist. Öffnen Sie den Android SDK Manager und laden Sie die neuesten SDK-Tools herunter.
Joe Fernandez
1
Schade, dass es damit kein Audio gibt. Aber trotzdem großartig.
Martin Capodici
1
Diese Seite enthält ein Paket mit einem eigenständigen ADB + -Skript
Arunskrish
1
Ich erhalte die Fehlermeldung WARNUNG: linker: libsac3d.so hat Textverschiebungen. Dies verschwendet Speicher und ist ein Sicherheitsrisiko. Bitte repariere. FEHLER: Codec kann nicht konfiguriert werden (err = -2147483648) WARNUNG: Fehler bei 1080
x
17

Ich weiß, dass dies eine alte Frage ist, aber da sie für die OP-Fans unbeantwortet zu sein scheint. Es gibt eine App, die dies im Android Market Screencast-Link unterstützt

Zaphoid
quelle
29
Erwähnenswert ist, dass es übrigens root benötigt.
Themightyjon
Funktioniert nicht auf meinem HTC One. Funktionierte aber gut auf meinem Galaxy S II.
MiloDC
1
Dieser benötigt keine Wurzel. Scheint bisher vielversprechend ... droid-at-screen.ribomation.com/installation
Fraggle
Droid-at-Screen macht kein Video, @Fraggle. Nur Screenshots. Es kann eine kontinuierliche Erfassung durchführen, jedoch mit etwa 1 fps.
Michael Petrotta
Derzeit verwende ich dieses sourceforge.net/projects/ashot, um nur den Bildschirm auf meinem Mac anzuzeigen, und verwende dann meine Standardwerkzeuge (SnapPro X), um einen Film von diesem Teil des Bildschirms aufzunehmen. Ich bin mir nicht sicher, wie hoch die Bildrate ist, aber ich denke höher als 1 fps.
Fraggle
8

Ja, verwenden Sie ein Telefon mit Videoausgang und einen Videorecorder, um den Stream aufzunehmen

Siehe diesen Artikel http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

Ollie C.
quelle
Das hätte ich tun können, aber meine Anforderung ist, alles in Android zu tun. Es ist die Absicht, es unterwegs zum Laufen zu bringen.
Taranfx
1
Ich denke, Sie haben kein Glück - die Anforderungen, um so viel Videocodierung im laufenden Betrieb auf einem mobilen Gerät zu verarbeiten, liegen außerhalb des Bereichs, zu dem die meisten physisch in der Lage sind. Android (AFAIK) verfügt über keine Schnittstelle für den Zugriff auf einen Stream Und selbst wenn dies der Fall wäre, ist dies eine potenziell enorme Sicherheitslücke, da eine App den Benutzer ausspionieren könnte.
Ollie C
4

@taranfx, ohne weitere Informationen gehe ich davon aus, dass Sie die Android Developer Tools installiert haben, da Sie sich auf StackOverFlow befinden. In diesem Fall können Sie den Emulator ausführen und dann eines der vielen Desktop-Bildschirmaufnahmeprogramme verwenden, um Ihre laufende Anwendung zu erfassen. Screenflow auf dem Mac funktioniert hierfür hervorragend. Ich bin mir sicher, dass es viele gute Bildschirmaufnahmeprogramme gibt, wenn Sie unter Windows oder einer Nix-Plattform arbeiten, und ich weiß, dass es auch einige Onlinedienste gibt, aber ich habe keine Links und habe sie auch nicht verwendet. Hier ist ein Link zum Referenzdokument zum Einrichten und Ausführen des Emulators. Das Android SDK enthält einen Emulator für mobile Geräte ...

MWR
quelle
2
Es tut uns leid? Ich habe um Videoaufnahme in Android gebeten, nicht auf Mac oder Emulator.
Taranfx
2
MWR schlägt vor, den Android-Bildschirm über den Emulator zu erfassen
Ollie C
3
Nicht alle APS können im Emulator ausgeführt werden.
RajV
4

Mein Vorschlag ist auch, einen Bildschirmrekorder wie SMRecorder zu verwenden. Anstatt den Emulator zu verwenden, der langsam ist - insbesondere für Spiele und Dinge, von denen Sie ein Video möchten -, empfehle ich die Verwendung einer VirtualBox-VM mit installiertem Android. Sie können den Dalvik-Debugger damit verbinden und Ihre App dort debuggen. Wenn der Debugger Ihre App zu stark verlangsamt, trennen Sie sie, um das Video aufzunehmen. Es gibt viele Links, die erklären, wie die Android-VM für das Debuggen eingerichtet wird. Ich finde es weitaus besser als der Emulator. Dies übernimmt nun nicht die Erfassung von Bildschirmen direkt auf dem Gerät, falls Ihre App den Beschleunigungsmesser oder die Kamera verwendet, die auf dem PC nicht verfügbar sind. Dafür würde ich die oben erwähnte Android Market App verwenden.

jdbertron
quelle
für ein gutes Maß: spkaa.com/…
Reuben L.
3

Ich denke, Screencast ist keine Ursache für Tegra 2-Inkompatibilität, ich habe es bereits versucht, aber keine Molke! Also habe ich versucht, Z-ScreeNRecorder vom Markt zu verwenden, es auf meinem LG Optimus 2x installiert, aber es ist der einzige leere Bildschirm, den ich für 5 Minuten ausprobiert habe. und da bekomme ich 5min. von leerer Bildschirmdatei mit einer Größe von 6 MB ... es macht also keinen Sinn, es zu versuchen, bis sie eine ruhige Software veröffentlichen, die mit dem tegra2-Chipsatz kompatibel ist!

Nenad
quelle
1

Es ist möglich, Bildschirmvideos direkt von Ihrem Telefon oder Tablet aufzunehmen, wenn Ihr Gerät gerootet ist. Ich arbeite an der SCR Screen Recorder App. Nach meinem besten Wissen ist dies die einzige App, die Tegra-Geräte (einschließlich Nexus 7) und Android 4.2 unterstützt. Im Moment zeichnet die App je nach Gerät zwischen 9 und 18 fps auf, aber ich arbeite daran, das zu verbessern. Der SCR Screen Recorder befindet sich noch in der Beta-Testphase. Sie können ihn also testen und Feedback geben.

Iwo Banas
quelle
1
Teilen Sie Ihre Forschung, wie es programmgesteuert in Android gemacht werden kann, um das Viceo des Bildschirms still zu erfassen?
Ajay S
@Iwo Kannst du deine Forschungen darüber teilen, wie man Bildschirmvideos grammatikalisch aufzeichnet? Danke dir.
Srini Kandula
1

AirPlay Mirroring and Screen Recording ist jetzt in CyanogenMod mit Mirror APK (Beta) verfügbar.

Oli
quelle
1

Wenn Sie Videokameraanwendungen entwickeln, ist es gut, die API zu kennen, die für die Videoaufnahme verwendet werden soll:

http://developer.android.com/training/camera/videobasics.html

(Der obige Link zeigt nur, wie die Videoaufnahme über Intent Submission erfolgen kann, nicht wie die eigentliche Aufnahme erfolgt.)

https://www.linux.com/learn/tutorials/729988-android-app-development-how-to-capture-video

und wenn Sie die adb-Anwendung "screenrecord" selbst schreiben möchten:

https://android.googlesource.com/platform/frameworks/av/+/android-cts-4.4_r1/cmds/screenrecord/screenrecord.cpp

Und die Hauptaufzeichnungsaktion wird hier ausgeführt:

static status_t recordScreen(const char* fileName) {
    status_t err;

<...>

    // Configure, but do not start, muxer.
    sp<MediaMuxer> muxer = new MediaMuxer(fileName,
            MediaMuxer::OUTPUT_FORMAT_MPEG_4);
    if (gRotate) {
        muxer->setOrientationHint(90);
    }

    // Main encoder loop.
    err = runEncoder(encoder, muxer);
    if (err != NO_ERROR) {
        encoder->release();
        encoder.clear();

        return err;
    }

Für Samsung-Handys gibt es zusätzliche Einstellungen ('cam_mode' Hack):

Die Auflösung von CamcorderProfile.QUALITY_HIGH erzeugt grün flackerndes Video

Weitere nützliche Links:

Wie kann ich eine Videoaufnahme auf Android aufnehmen?

Peter Teoh
quelle
1

Ich habe es nicht implementiert, aber ich gebe Ihnen trotzdem eine Idee, dies zu tun.

Holen Sie sich zunächst den Code, um einen Screenshot des Android-Geräts zu erstellen . Rufen Sie dieselbe Funktion zum Erstellen von Bildern nach einem bestimmten Intervall auf. Fügen Sie hinzu und suchen Sie den Code zum Erstellen von Videos aus Frames / Bildern .

Bearbeiten

siehe diesen Link und ändern Sie ihn entsprechend Ihrer Bildschirmgröße. Hauptsache, Sie teilen Ihre Arbeit in mehrere kleine Aufgaben auf und kombinieren sie dann nach Bedarf.

FFMPEG ist der beste Weg, dies zu tun. aber einmal habe ich versucht, aber es ist eine sehr lange Prozedur. Zuerst müssen Sie die Cygwin- und Native C ++ - Bibliothek und viele Dinge herunterladen und eine Verbindung herstellen, dann können Sie an FFMPEG arbeiten (es ist in C ++ integriert).

Zar E Ahmer
quelle
Ich habe das Gleiche getan, wie Sie vorgeschlagen haben, Bilder nach einem bestimmten Intervall oder ohne Intervall aufzunehmen. Ich habe eine Bildlaufansicht, in der ich scrolle, und in einem anderen Thread, in dem ich den Bildschirmbereich aufzeichne, aber die gleiche Aufnahme wird für 6-7 Bilder zurückgegeben und dann wird ein anderer Bereich erfasst. Ich brauche eine vollständige Bildfolge.
Farrakh Javed
1

Schauen Sie sich Remote Manager an . Aber es scheint mir, dass es mit Geräten mit großem Bildschirm nicht richtig funktioniert. Sie können DEMO jedoch vorher ausprobieren .

Nolesh
quelle
Beide Links sind tot: /
Rahulserver
@rahulserver, Google hat sie blockiert, weil ich Androidim Namen des Programms verwendet habe. Bald werde ich sie wieder Androidwortlos veröffentlichen.
Nolesh
Danke für die Antwort. Ich bin dringend in Not. Bitte benachrichtigen Sie hier, sobald Sie veröffentlicht haben.
Rahulserver
@rahulserver, ich habe sie erneut veröffentlicht und Links korrigiert.
Nolesh
1

Wenn Sie die Benutzernavigation aufzeichnen möchten, um die Benutzeroberfläche und andere Dinge zu testen, empfehle ich die Verwendung TestFairy

Sie können die apk per E-Mail an einige Testbenutzer senden und ein Video mit allen Sitzungen in der App und sogar den Abstürzen der App und den Gerätestatistiken anzeigen.

roter Alarm
quelle
1

In Android Lollipop (5) wurde eine neue Funktion hinzugefügt, die die hier erläuterte Bildschirmaufnahme ermöglicht

Hier ist ein Beispiel

Rufen Sie startActivityForResult so auf

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Erfassen Sie dann das Ergebnis

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode != PERMISSION_CODE) {
        Log.e(TAG, "Unknown request code: " + requestCode);
        return;
    }
    if (resultCode != RESULT_OK) {
        Toast.makeText(this,
                "User denied screen sharing permission", Toast.LENGTH_SHORT).show();
        return;
    }
    mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
    mVirtualDisplay = createVirtualDisplay();
}
Rogermushroom
quelle
0

Das ist alt, aber was ist mit ASC ?

Richard Cotrina
quelle
Aufgrund von Inkompatibilität mit Tegra-Geräten? .. yeah .. ich habe einen Asus Transformer: C
Richard Cotrina
Es erfordert die Ausführung eines "Aktivators" auf dem PC / Mac, ist jedoch nicht signiert und erklärt weder, was er tut, noch wie die "Aktivierung" manuell durchgeführt wird. Es klingt wie ein Sicherheitsrisiko- und Bedrohungsvektor.
Chloe
0

Wenn Sie sich auf einem PC befinden, können Sie My Phone Explorer auf dem PC und den MyPhoneExplorer-Client auf dem Telefon ausführen , die Bildschirmaufnahme so einstellen, dass sie kontinuierlich aktualisiert wird, und mit Wink einen benutzerdefinierten rechteckigen Bereich Ihres Bildschirms über das Fenster My Phone Explorer erfassen mit Ihrer eigenen Erfassungsrate. Konvertieren Sie dann in Wink in ein FLV und konvertieren Sie dann mit WinFF von Flash-Video zu MPG .

Chloe
quelle
Es sollte hinzugefügt werden, dass "PC" hier eine Art Microsoft Windows bedeutet.
Erste
0

Ich habe die App nicht benutzt, aber ich habe Rec gesehen . als eine Möglichkeit, dies zu tun, verwiesen, aber Sie müssen das Telefon rooten.

Rich Elswick
quelle