web-dev-qa-db-fra.com

Capture vidéo de l'écran d'Android

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, je m'en fiche, je veux au moins 15 images par seconde.

Mise à jour: Je ne veux pas de matériel externe. Le but 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 disposé à passer aux modifications au niveau du système d'exploitation, mais j'aurais besoin d'un point de départ.

195
Taranfx

Les appareils Android 4.4 (KitKat) et les versions ultérieures disposent d'un utilitaire Shell pour enregistrer l'écran de l'appareil Android. Connectez un périphérique en mode développeur/débogage exécutant KitKat avec l'utilitaire adb via 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é à 3 minutes maximum.

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

242
Joe Fernandez

Je sais que c’est une vieille question, mais comme elle semble rester sans réponse pour les OP aimer. Il existe une application qui répond à cela dans le Android Market lien Screencast

17
Zaphoid

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

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

8
Ollie C

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 tout ce dont vous voudriez une vidéo, je recommande d'utiliser une machine virtuelle VirtualBox sur laquelle Android est 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 le Android VM 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.

4
jdbertron

@taranfx, sans plus d’informations, je suppose que puisque vous êtes sur StackOverFlow, vous avez installé les Android outils de développement. Si tel 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 le 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 pas de liens 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 de périphérique mobile ...

4
MWR

Je suppose que screencast n'est pas une cause de l'incompatibilité de 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 il n'enregistre qu'un écran vierge, j'ai essayé pendant 5 minutes. et là je reçois 5min. d’un fichier d’écran vierge de 6 Mo ... il est donc inutile d’essayer tant que le logiciel compatible avec le jeu de puces tegra2 n’est pas libéré!

3
Nenad

Android 4.3 dispose d'une nouvelle API MediaCodec qui peut être utilisée pour enregistrer à partir d'une surface. Voir: http://developer.Android.com/about/versions/Android-4.3.html (faites défiler jusqu'à la section "Encodage vidéo à partir d'une surface")

2
AOSP_junkie

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

Voici un exemple

Appelez startActivityForResult comme ceci

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Puis capturez 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();
}
1
rogermushroom

Jetez un oeil à Remote Manager . Mais il me semble que cela ne fonctionne pas correctement avec les appareils qui ont un grand écran. Bien que vous puissiez essayer DEMO avant.

1
Nolesh

Il est possible d’enregistrer des vidéos à l’écran directement à partir de votre téléphone ou de 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 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 à l'améliorer. SCR Screen Recorder est encore en phase de test bêta, alors n'hésitez pas à le tester et à lui faire part de vos commentaires.

1
Iwo Banas

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 un capture d’écran de Android périphérique . Et appelez la même fonction pour créer des images après un intervalle de temps. Ajouter puis trouver le code à créer vidéo à partir d'images/images .

Modifier

voyez ce lien également et modifiez-le en fonction de la dimension de votre é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 j'ai essayé mais c'est une très longue procédure. Vous devez d’abord télécharger la bibliothèque cygwin et Native C++, ainsi que de nombreuses choses et vous connecter, puis travailler sur FFMPEG (il est construit en C++).

1
Xar E Ahmer

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

Il vous permet d'envoyer l'apk par courrier électronique à certains utilisateurs du test et de visionner 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
red_alert

Si vous développez des applications de caméra vidéo, il sera utile 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 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 "screenrecord" adb:

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

Et l'action d'enregistrement clé est faite 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 les téléphones Samsung, il existe des paramètres supplémentaires (hack 'cam_mode'):

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

Plus de liens utiles:

Comment puis-je capturer un enregistrement vidéo sur Android?

1
Peter Teoh

La mise en miroir et l'enregistrement d'écran AirPlay sont maintenant dans CyanogenMod avec l'APP miroir (Bêta).

1
Oli

Je n'ai pas utilisé l'application, mais j'ai déjà vu Enreg. comme moyen de le faire, mais vous devez utiliser le téléphone root.

0
Rich Elswick

Si vous êtes sur un PC, vous pouvez exécuter My Phone Explorer sur le PC, le MyPhoneExplorer Client sur le téléphone, régler la capture d'écran pour qu'elle s'actualise en permanence et utilisez - Wink pour capturer une zone rectangulaire personnalisée de votre écran sur la fenêtre de My Phone Explorer avec votre propre taux de capture. Ensuite, convertissez un fichier FLV dans Wink, puis convertissez une vidéo Flash en MPG avec WinFF .

0
Chloe

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

0
Richard Cotrina