Capturez une vidéo de l'écran d'Android

195

Oubliez les captures d'écran, est-il possible de capturer une vidéo de l'application en cours d'exécution dans Android? Enraciné ou non enraciné, je m'en fiche, je veux au moins 15fps.

Mise à jour: je ne veux pas de matériel externe. L'objectif est de le rendre parfaitement portable et chaque image est capturée dans Android OS. S'il franchit les limites de l'application sdk, je suis prêt à passer aux modifications au niveau du système d'exploitation, mais j'aurais besoin d'un point de départ.

Taranfx
la source
Je vois complètement ce qui se dit ici. Il semble que l'émulateur devrait également avoir la possibilité de rediriger l'écran actuel dans un fichier vidéo. J'adorerais une fonctionnalité comme celle-ci pour que je puisse faire des vidéos informatives de mes jeux et applications.
Robert Massaioli
1
Avez-vous une solution pour cela? Si oui, veuillez partager avec nous. Moi aussi, je dois capterre la vidéo de l'écran Android.
deepa
@deepa nope il n'y a pas de bonne façon de le faire.
Taranfx
Consultez ce projet: sourceforge.net/projects/ashot
Nirmal Patel
Est-il possible de lire à partir du tampon d'écran matériel?
mP.

Réponses:

243

Android 4.4 (KitKat) et les appareils supérieurs ont un utilitaire shell pour enregistrer l'écran de l'appareil Android. Connectez un appareil en mode développeur / débogage exécutant KitKat avec l'utilitaire adb sur USB, puis tapez ce qui suit:

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

L'enregistrement d'écran est limité à un maximum de 3 minutes.

Référence: https://developer.android.com/studio/command-line/adb.html#screenrecord

Joe Fernandez
la source
me donne une réponse comme screenrecord: not found adb est obsolète pourquoi?
Poison
1
Il semble que votre SDK Android soit obsolète. Ouvrez Android SDK Manager et téléchargez les derniers outils SDK.
Joe Fernandez
1
Dommage qu'il n'y ait pas d'audio avec ça. Mais génial quand même.
Martin Capodici
1
Juste pour ajouter, cette page a un package ayant un script adb + autonome "ScreenRecord.bat" qui peut être double-cliqué pour commencer à enregistrer la vidéo de l'écran Android. Skipser.com/p/2/p/record-screen-video-in -android.html
arunskrish
1
J'obtiens l'erreur AVERTISSEMENT: l'éditeur de liens: libsac3d.so a des délocalisations de texte. Cela gaspille de la mémoire et constitue un risque pour la sécurité. S'il-vous-plaît, réparez. ERREUR: impossible de configurer le codec (err = -2147483648) AVERTISSEMENT: échec à 1080x1920, réessai à 720x1280
Pete_ch
17

Je sais que c'est une vieille question mais puisqu'elle semble être sans réponse au goût des PO. Il existe une application qui l'accompagne dans le lien Screencast Android Market

Zaphoid
la source
29
Il convient de mentionner qu'il nécessite root, btw.
themightyjon
Non fonctionnel sur mon HTC One. J'ai bien fonctionné sur mon Galaxy S II, cependant.
MiloDC
1
Celui-ci ne nécessite pas de root. Semble prometteur jusqu'à présent ... droid-at-screen.ribomation.com/installation
Fraggle
droid-at-screen ne fait pas de vidéo, @Fraggle. Juste des captures d'écran. Il peut effectuer une capture continue, mais à environ 1fps.
Michael Petrotta
Actuellement, j'utilise ce sourceforge.net/projects/ashot pour simplement montrer l'écran sur mon mac, puis j'utilise mes outils standard (SnapPro X) pour capturer un film à partir de cette partie de l'écran. Je ne sais pas quel est le taux de trame sur ashot, mais je pense supérieur à 1 fps.
Fraggle
8

Oui, utilisez un téléphone avec sortie vidéo et utilisez un magnétoscope pour capturer le flux

Voir cet article http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

Ollie C
la source
C'est ce que j'aurais pu faire, mais mon exigence est de tout faire dans Android. Le faire fonctionner en déplacement est l'intention.
Taranfx
1
Je pense que vous n'avez pas de chance - les exigences pour gérer autant d'encodage vidéo, à la volée, sur un appareil mobile, sont hors de portée de ce dont la plupart sont physiquement capables, Android (AFAIK) n'a pas d'interface pour accéder à un flux , et même si c'était le cas, c'est une faille de sécurité potentiellement énorme car une application pourrait espionner l'utilisateur.
Ollie C
4

@taranfx, sans plus d'informations, je suppose, puisque vous êtes sur StackOverFlow, que vous avez installé les outils de développement Android. Si c'est le cas, vous pouvez exécuter l'émulateur, puis utiliser l'un des nombreux programmes de capture d'écran du bureau pour capturer votre application en cours d'exécution. Screenflow sur Mac fonctionne très bien pour cela. Je suis sûr qu'il existe de nombreux bons programmes de capture d'écran si vous utilisez Windows ou une plate-forme Nix et je sais qu'il existe également des services en ligne, mais je n'ai aucun lien et je ne les ai pas utilisés. Voici un lien vers le document de référence sur la configuration et l'exécution de l'émulateur. Le SDK Android comprend un émulateur d'appareil mobile ...

MWR
la source
2
Désolé? J'ai demandé une capture vidéo sur Android et non sur Mac ou Emulator.
Taranfx
2
MWR suggère la capture de l'écran Android via l'émulateur
Ollie C
3
Tous les aps ne peuvent pas être exécutés dans l'émulateur.
RajV
4

Ma suggestion est également d'utiliser un enregistreur d'écran, tel que SMRecorder. Au lieu d'utiliser l'émulateur, qui est lent - en particulier pour les jeux et les choses dont vous voudriez une vidéo, je recommande d'utiliser une machine virtuelle VirtualBox, avec Android installé. Vous pouvez y connecter le débogueur Dalvik et y déboguer votre application. Si le débogueur ralentit trop votre application, déconnectez-la pour enregistrer la vidéo. Il existe de nombreux liens expliquant comment configurer la machine virtuelle Android pour le débogage. Je le trouve bien meilleur que l'émulateur. Maintenant, cela ne prend pas en charge la capture des écrans directement sur l'appareil, au cas où votre application utilise l'accéléromètre ou la caméra qui ne sont pas disponibles sur le PC. Pour cela, j'utiliserais l'application Android Market mentionnée ci-dessus.

jdbertron
la source
pour faire bonne mesure: spkaa.com/…
Reuben L.
3

Je suppose que la capture d'écran n'est pas une cause d'incompatibilité avec Tegra 2, je l'ai déjà essayé, mais pas de lactosérum! J'ai donc essayé d'utiliser Z-ScreeNRecorder du marché, je l'ai installé sur mon LG Optimus 2x, mais c'est le seul écran vierge de l'enregistrement, j'ai essayé pendant 5 minutes. et là je reçois 5min. de fichier d'écran vierge de 6 Mo ... il est donc inutile d'essayer jusqu'à ce qu'ils libèrent une certaine tranquillité de logiciel compatible avec le chipset tegra2!

Nenad
la source
1

Il est possible d'enregistrer des vidéos à l'écran directement depuis votre téléphone ou votre tablette si votre appareil est enraciné. Je travaille sur l'application SCR Screen Recorder . À ma connaissance, il s'agit de la seule application prenant en charge les appareils Tegra (y compris le Nexus 7) et Android 4.2. Pour le moment, l'application enregistre entre 9 et 18 images par seconde en fonction de l'appareil, mais je travaille à améliorer cela. L'enregistreur d'écran SCR est toujours en phase de test bêta, alors n'hésitez pas à le tester et à donner votre avis.

Iwo Banas
la source
1
Partagez vos recherches sur la façon dont cela peut être fait par programme dans Android pour capturer le viceo de l'écran en silence?
Ajay S
@Iwo Pouvez-vous partager vos recherches sur la façon d'enregistrer la vidéo d'écran grammaticalement? Je vous remercie.
Srini Kandula
1

La mise en miroir et l'enregistrement d'écran AirPlay est maintenant dans CyanogenMod avec Mirror APK (Beta).

Oli
la source
1

Si vous développez des applications de caméra vidéo, il sera bon de connaître l'API à utiliser pour la capture vidéo:

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

(le lien ci-dessus montre uniquement comment l'enregistrement vidéo peut être effectué via la soumission d'intention, pas comment l'enregistrement réel est effectué)

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

et si vous voulez écrire vous-même l'application adb "screenrecord":

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

Et l'action d'enregistrement clé se fait ici:

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;
    }

Pour le téléphone Samsung, il existe des paramètres supplémentaires (piratage 'cam_mode'):

La résolution CamcorderProfile.QUALITY_HIGH produit une vidéo clignotante verte

Liens plus utiles:

Comment capturer un enregistrement vidéo sur Android?

Peter Teoh
la source
1

Je ne l'ai pas implémenté mais je vous donne quand même une idée pour le faire.

Tout d'abord, obtenez le code pour prendre une capture d'écran de l'appareil Android . Et appelez la même fonction pour créer des images après un intervalle de temps. Ajoutez puis trouvez le code pour créer une vidéo à partir de cadres / images .

Éditer

voir aussi ce lien et le modifier en fonction de votre dimension d'écran. L'essentiel est de diviser votre travail en plusieurs petites tâches puis de le combiner selon vos besoins.

FFMPEG est le meilleur moyen de le faire. mais une fois que j'ai essayé mais c'est une très longue procédure. Vous devez d'abord télécharger cygwin et la bibliothèque Native C ++ et beaucoup de choses et vous connecter, puis vous pouvez travailler sur FFMPEG (il est construit en C ++).

Zar E Ahmer
la source
J'ai fait la même chose que vous avez suggéré de prendre des images après un intervalle de temps ou sans intervalle, j'ai une vue de défilement dans laquelle je fais défiler et dans un autre fil je capture la zone d'écran, mais une même capture revient pour 6-7 images et qu'une autre zone différente est capturée. J'ai besoin d'une séquence complète d'images.
Farrakh Javed
1

Jetez un œil à Remote Manager . Mais il me semble que cela ne fonctionne pas correctement avec des appareils dotés d'un grand écran. Cependant, vous pouvez essayer DEMO avant.

Nolesh
la source
Les deux liens sont morts: /
rahulserver
@rahulserver, Google les a bloqués, car je les ai utilisés Androidau nom du programme. Bientôt , je vais les publier à nouveau sans Androidmot.
Nolesh
Merci d'avoir répondu. Je suis désespérément dans le besoin, alors veuillez en informer ici une fois que vous aurez publié.
rahulserver
@rahulserver, je les ai à nouveau publiés et corrigé les liens.
Nolesh
1

Si vous souhaitez enregistrer la navigation de l'utilisateur afin de pouvoir tester l'interface utilisateur et d'autres choses, je vous recommande d'utiliser TestFairy

Il vous permet d'envoyer l'apk à certains utilisateurs de test par e-mail et de voir une vidéo avec toutes les sessions de l'application et même les plantages de l'application et les statistiques de l'appareil.

alerte rouge
la source
1

Dans Android Lollipop (5), une nouvelle fonctionnalité a été ajoutée qui permet la capture d'écran qui est expliquée ici

Voici un exemple

Appelez startActivityForResult comme ceci

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Capturez ensuite le résultat

@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
la source
0

C'est vieux, mais qu'en est- ASC ?

Richard Cotrina
la source
En raison d'une incompatibilité avec les appareils alimentés par Tegra? .. ouais .. j'ai un Asus Transformer: C
Richard Cotrina
Il nécessite l'exécution d'un «activateur» sur le PC / Mac, mais n'est pas signé et n'explique pas ce qu'il fait ni comment faire «l'activation» manuellement. Cela ressemble à un vecteur de risque et de menace pour la sécurité.
Chloe
0

Si vous êtes sur un PC, vous pouvez exécuter My Phone Explorer sur le PC, le client MyPhoneExplorer sur le téléphone, configurer la capture d'écran pour qu'elle s'actualise en continu et utiliser Wink pour capturer une zone rectangulaire personnalisée de votre écran sur la fenêtre My Phone Explorer avec votre propre taux de capture. Convertissez ensuite en FLV en Wink, puis convertissez de la vidéo Flash en MPG avec WinFF .

Chloe
la source
Il faut ajouter que "PC" signifie ici une sorte de Microsoft Windows.
rwst
0

Je n'ai pas utilisé l'application, mais j'ai vu Rec. référencé comme un moyen de le faire, mais vous devez rooter le téléphone.

Rich Elswick
la source