Capture video de la pantalla de Android

195

Olvídese de las capturas de pantalla, ¿es posible capturar un video de la aplicación en ejecución en Android? Rooteado o no rooteado, no me importa, quiero al menos 15 fps.

Actualización: no quiero ningún hardware externo. La intención es hacerlo perfectamente portátil y cada fotograma se capture dentro del sistema operativo Android. Si cruza los límites de la aplicación SDK, estoy dispuesto a ir a las modificaciones de nivel del sistema operativo, pero necesitaría un punto de partida.

Taranfx
fuente
Veo completamente lo que se dice aquí. Parece que el emulador también debería tener la función de redirigir la pantalla actual a un archivo de video. Me encantaría una característica como esta para poder hacer videos informativos de mis juegos y aplicaciones.
Robert Massaioli
1
¿Tienes solución para esto? Si es así, comparta con nosotros. yo también tengo que caputre video de la pantalla de Android.
deepa
@deepa no, no hay una buena manera de hacer esto.
Taranfx
Verifique este proyecto: sourceforge.net/projects/ashot
Nirmal Patel
¿Es posible leer desde el búfer de la pantalla de hardware?
mP.

Respuestas:

243

Los dispositivos Android 4.4 (KitKat) y superiores tienen una utilidad de shell para grabar la pantalla del dispositivo Android. Conecte un dispositivo en modo desarrollador / depuración que ejecute KitKat con la utilidad adb a través de USB y luego escriba lo siguiente:

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

La grabación de pantalla está limitada a un máximo de 3 minutos.

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

Joe Fernández
fuente
me está dando una respuesta como screenrecord: no encontrado adb está desactualizado ¿por qué?
Veneno
1
Parece que tu SDK de Android no está actualizado. Abra Android SDK Manager y descargue las últimas herramientas de SDK.
Joe Fernández
1
Es una pena que no haya audio con esto. Pero impresionante, no obstante.
Martin Capodici
1
Solo para agregar, esta página tiene un paquete que tiene un script adb + independiente "ScreenRecord.bat" en el que se puede hacer doble clic para comenzar a grabar videos de la pantalla de Android. Skipser.com/p/2/p/record-screen-video-in -android.html
arunskrish
1
Recibo el error ADVERTENCIA: enlazador: libsac3d.so tiene reubicaciones de texto. Esto está desperdiciando memoria y es un riesgo de seguridad. Por favor, arregla. ERROR: no se puede configurar el códec (err = -2147483648) ADVERTENCIA: falló a 1080x1920, reintentando a 720x1280
Pete_ch
17

Sé que esta es una vieja pregunta, pero parece que no tiene respuesta para el gusto de los OP. Hay una aplicación que lo confirma en el enlace de Android Market Screencast

Zafoide
fuente
29
Vale la pena mencionar que requiere root, por cierto.
themightyjon
No funciona en mi HTC One. Sin embargo, funcionó bien en mi Galaxy S II.
MiloDC
1
Este no requiere root. Parece prometedor hasta ahora ... droid-at-screen.ribomation.com/installation
Fraggle
droid-at-screen no hace video, @Fraggle. Solo capturas de pantalla. Puede hacer captura continua, pero a aproximadamente 1 fps.
Michael Petrotta
Actualmente estoy usando este sourceforge.net/projects/ashot para mostrar la pantalla en mi Mac, luego uso mis herramientas estándar (SnapPro X) para capturar una película desde esa parte de la pantalla. No estoy seguro de cuál es la velocidad de fotogramas en el disparo, pero creo que es superior a 1 fps.
Fraggle
8

Sí, use un teléfono con salida de video y use una grabadora de video para capturar la transmisión

Ver este artículo http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

Ollie C
fuente
Eso es lo que podría haber hecho, pero mi requisito es hacer todo dentro de Android. Hacer que funcione sobre la marcha es la intención.
Taranfx
1
Creo que no tienes suerte: los requisitos para manejar tanta codificación de video, sobre la marcha, en un dispositivo móvil, están fuera del alcance de lo que la mayoría es físicamente capaz, Android (AFAIK) no tiene una interfaz para acceder a una transmisión , e incluso si lo hiciera, es un agujero de seguridad potencialmente enorme ya que una aplicación podría espiar al usuario.
Ollie C
4

@taranfx, sin más información, supongo que ya que está en StackOverFlow, tiene instaladas las Herramientas para desarrolladores de Android. Si es así, puede ejecutar el emulador y luego usar uno de los muchos programas de captura de pantalla de escritorio para capturar su aplicación en ejecución. Screenflow en Mac funciona muy bien para hacer esto. Estoy seguro de que hay muchos buenos programas de captura de pantalla si estás en Windows o en una plataforma Nix y sé que también hay algunos servicios en línea, pero no tengo ningún enlace ni los he usado. Aquí hay un enlace para el documento de referencia sobre cómo configurar y ejecutar el emulador. El SDK de Android incluye un emulador de dispositivo móvil ...

MWR
fuente
2
¿Lo siento? Pedí captura de video en Android, no en Mac o Emulator.
Taranfx
2
MWR sugiere capturar la pantalla de Android a través del emulador
Ollie C
3
No todas las aps se pueden ejecutar en el emulador.
RajV
4

Mi sugerencia también es usar una grabadora de pantalla, como SMRecorder. En lugar de usar el emulador, que es lento, especialmente para juegos y cosas de las que desea un video, le recomiendo usar una VM VirtualBox, con Android instalado. Puede conectar el depurador Dalvik a él y depurar su aplicación allí. Si el depurador ralentiza demasiado su aplicación, desconéctela para grabar el video. Hay muchos enlaces que explican cómo configurar la VM de Android para la depuración. Lo encuentro mucho mejor que el emulador. Ahora esto no se encarga de capturar pantallas directamente en el dispositivo, en caso de que su aplicación use el acelerómetro o la cámara que no están disponibles en la PC. Para eso usaría la aplicación de Android Market mencionada anteriormente.

jdbertron
fuente
por si acaso
Reuben L.
3

Supongo que el screencast no es posible debido a la incompatibilidad de tegra 2, ya lo probé, ¡pero no hay suero! Así que intenté usar Z-ScreeNRecorder del mercado, lo instalé en mi LG Optimus 2x, pero solo graba la pantalla en blanco, lo intenté durante 5 minutos. y ahí consigo 5min. de un archivo de pantalla en blanco de 6 MB de tamaño ... ¡así que no tiene sentido intentarlo hasta que liberen un software que sea compatible con el chipset tegra2!

Nenad
fuente
1

Es posible grabar videos de pantalla directamente desde su teléfono o tableta si su dispositivo está rooteado. Estoy trabajando en la aplicación SCR Screen Recorder . Que yo sepa, esta es la única aplicación que admite dispositivos Tegra (incluido Nexus 7) y Android 4.2. Por el momento, la aplicación registra entre 9 y 18 fps según el dispositivo, pero estoy trabajando para mejorar eso. SCR Screen Recorder todavía está en fase de prueba beta, así que siéntase libre de probarlo y dar su opinión.

Iwo Banas
fuente
1
Comparta su investigación sobre cómo se puede hacer mediante programación en Android para capturar el viceo de la pantalla en silencio.
Ajay S
@Iwo ¿Puedes compartir tu investigación sobre cómo grabar video en pantalla gramaticalmente? Gracias.
Srini Kandula
1

AirPlay Mirroring y Screen Recording ahora está en CyanogenMod con Mirror APK (Beta).

Oli
fuente
1

Si está desarrollando aplicaciones de cámara de video, será bueno conocer la API que se utilizará para la captura de video:

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

(el enlace anterior solo muestra cómo se puede realizar la grabación de video mediante el envío de intención, no cómo se realiza la grabación real)

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

y si desea escribir la aplicación adb "screenrecord" usted mismo:

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

Y la acción de grabación clave se realiza aquí:

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

Para el teléfono Samsung hay configuraciones adicionales ('cam_mode' hack):

CamcorderProfile.QUALITY_HIGH resolución produce video verde parpadeante

Más enlaces útiles:

¿Cómo puedo capturar una grabación de video en Android?

Peter Teoh
fuente
1

No lo implementé, pero aún así te estoy dando una idea para hacer esto.

En primer lugar, obtenga el código para tomar una captura de pantalla del dispositivo Android . Y llame a la misma función para crear imágenes después de un intervalo de veces. Agregue y busque el código para crear video a partir de cuadros / imágenes .

Editar

vea también este enlace y modifíquelo de acuerdo con la dimensión de su pantalla. Lo principal es dividir su trabajo en varias tareas pequeñas y luego combinarlo según lo necesite.

FFMPEG es la mejor manera de hacer esto. pero una vez que lo he intentado pero es un procedimiento muy largo. Primero tiene que descargar la biblioteca cygwin y Native C ++ y muchas cosas y conectarse, luego puede trabajar en FFMPEG (está construido en C ++).

Zar E Ahmer
fuente
Hice lo mismo que sugirió al tomar imágenes después de un intervalo de tiempo o sin intervalo, tengo una vista de desplazamiento en la que estoy haciendo el desplazamiento y en otro hilo estoy capturando el área de la pantalla, pero se obtiene una misma captura para 6-7 imágenes y que se captura otra área diferente. Necesito una secuencia completa de imágenes.
Farrakh Javed
1

Echa un vistazo a Remote Manager . Pero me parece que no funciona correctamente con dispositivos que tienen pantalla grande. Aunque, puedes probar DEMO antes.

Nolesh
fuente
Ambos enlaces están muertos: /
rahulserver
@rahulserver, Google los bloqueó, porque lo usé Androiden nombre del programa. Pronto los volveré a publicar sin decir Androidpalabra.
Nolesh
gracias por responder. Necesito desesperadamente, así que por favor notifique aquí una vez que haya publicado.
rahulserver
@rahulserver, los publiqué nuevamente y corrigí los enlaces.
Nolesh
1

Si desea grabar la navegación del usuario para poder probar la interfaz de usuario y otras cosas, le recomiendo que use TestFairy

Le permite enviar el apk a algunos usuarios de prueba por correo electrónico y ver un video con todas las sesiones en la aplicación e incluso los bloqueos de la aplicación y las estadísticas del dispositivo.

alerta roja
fuente
1

En Android Lollipop (5) se ha agregado una nueva característica que permite la captura de pantalla, que se explica aquí

Aquí hay un ejemplo

Llame a startActivityForResult como este

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Luego captura el resultado

@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
fuente
0

Esto es viejo, pero ¿qué pasa con ASC ?

Richard Cotrina
fuente
¿Debido a la incompatibilidad con los dispositivos con tecnología Tegra? .. sí .. obtuve un Asus Transformer: C
Richard Cotrina el
Requiere ejecutar un 'activador' en la PC / Mac, pero no está firmado y no explica qué hace ni cómo hacer la 'activación' manualmente. Suena como un riesgo de seguridad y un vector de amenaza.
Chloe
0

Si está en una PC, puede ejecutar My Phone Explorer en la PC, MyPhoneExplorer Client en el teléfono, configurar la captura de pantalla para que se actualice continuamente y usar Wink para capturar un área rectangular personalizada de su pantalla sobre la ventana My Phone Explorer con tu propia tasa de captura. Luego convierta a un FLV en Wink, luego convierta de video Flash a MPG con WinFF .

Chloe
fuente
Cabe agregar que "PC" aquí significa algún tipo de Microsoft Windows.
rwst
0

No he usado la aplicación, pero he visto Rec. referenciada como una forma de hacer esto, pero necesita rootear el teléfono.

Rich Elswick
fuente