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.


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


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


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


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


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 ...


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.


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!



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.


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).


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?


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 ++).


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.


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.


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

0

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


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 .


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.