Cattura video dello schermo di Android


195

Dimentica gli screenshot, è possibile catturare un video dell'applicazione in esecuzione su Android? Radicato o non radicato, non mi interessa, voglio almeno 15 fps.

Aggiornamento: non voglio alcun hardware esterno. L'intento è renderlo perfettamente portatile e ogni fotogramma viene catturato all'interno del sistema operativo Android. Se attraversa i confini dell'app sdk, sono disposto a passare alle modifiche a livello di sistema operativo ma avrei bisogno di un punto di partenza.


Vedo completamente ciò che viene detto qui. Sembra che l'emulatore dovrebbe avere la funzione di reindirizzare la schermata corrente anche in un file video. Mi piacerebbe una funzionalità come questa in modo da poter realizzare video informativi sui miei giochi e app.
Robert Massaioli,

1
Hai una soluzione per questo? in tal caso, ti preghiamo di condividere con noi. Anch'io devo vedere il video dello schermo Android.
deepa,

@deepa no, non c'è modo di farlo.
Taranfx,

Controlla questo progetto: sourceforge.net/projects/ashot
Nirmal Patel

È possibile leggere dal buffer dello schermo hardware?
mP.

Risposte:


243

I dispositivi Android 4.4 (KitKat) e superiori dispongono di un'utilità shell per la registrazione dello schermo del dispositivo Android. Connetti un dispositivo in modalità sviluppatore / debug che esegue KitKat con l'utilità adb su USB e quindi digita quanto segue:

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

La registrazione dello schermo è limitata a un massimo di 3 minuti.

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


mi sta dando una risposta come screenrecord: non trovato adb non è aggiornato perché?
Poison,

1
Sembra che il tuo SDK Android non sia aggiornato. Apri Android SDK Manager e scarica gli strumenti SDK più recenti.
Joe Fernandez,

1
Peccato che non ci sia audio con questo. Ma fantastico comunque.
Martin Capodici,

1
Solo per aggiungere, questa pagina ha un pacchetto con uno script + adb standalone "ScreenRecord.bat" che può essere cliccato due volte per iniziare a registrare il video dello schermo Android .. skipser.com/p/2/p/record-screen-video-in -android.html
arunskrish,

1
Ottengo l'errore ATTENZIONE: linker: libsac3d.so ha rilocazioni di testo. Questo sta sprecando memoria ed è un rischio per la sicurezza. Per favore, aggiusta. ERRORE: impossibile configurare il codec (err = -2147483648) ATTENZIONE: errore a 1080x1920, nuovo tentativo a 720x1280
Pete_ch

17

So che questa è una vecchia domanda, ma dal momento che sembra non avere risposta al gradimento dei PO. C'è un'app che lo completa nel link Screencast di Android Market


29
Vale la pena ricordare che richiede root, tra l'altro.
themightyjon,

Non funzionante sul mio HTC One. Ha funzionato bene sul mio Galaxy S II, però.
MiloDC,

1
Questo non richiede root. Sembra promettente finora ... droid-at-screen.ribomation.com/installation
Fraggle

droid-at-screen non fa video, @Fraggle. Solo schermate. Può fare l'acquisizione continua, ma a circa 1 fps.
Michael Petrotta,

Attualmente sto usando questo sourceforge.net/projects/ashot per mostrare semplicemente lo schermo sul mio mac, quindi uso i miei strumenti standard (SnapPro X) per catturare un film da quella parte dello schermo. Non sono sicuro di quale sia il frame rate su Ashot, ma penso che sia superiore a 1 fps.
Fraggle,

8

Sì, utilizzare un telefono con un'uscita video e utilizzare un videoregistratore per acquisire lo streaming

Vedi questo articolo http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html


Questo è quello che avrei potuto fare, ma il mio requisito è quello di fare tutto all'interno di Android. L'intento è farlo funzionare ovunque.
Taranfx,

1
Penso che tu sia sfortunato: i requisiti per gestire tanta codifica video, al volo, su un dispositivo mobile, sono al di fuori dell'ambito di ciò che la maggior parte è fisicamente capace, Android (AFAIK) non ha un'interfaccia per accedere a uno stream e, anche se lo facesse, è una falla di sicurezza potenzialmente enorme in quanto un'app potrebbe spiare l'utente.
Ollie C

4

@taranfx, senza ulteriori informazioni, suppongo, poiché sei su StackOverFlow che hai installato gli Strumenti per gli sviluppatori Android. In tal caso, puoi eseguire l'emulatore e quindi utilizzare uno dei numerosi programmi di acquisizione dello schermo del desktop per acquisire l'applicazione in esecuzione. Screenflow su Mac funziona alla grande per farlo. Sono sicuro che ci sono molti buoni programmi di cattura dello schermo se sei su Windows o su una piattaforma Nix e so che ci sono anche alcuni servizi online ma non ho alcun collegamento né li ho usati. Ecco un link per il documento di riferimento sull'impostazione e l'esecuzione dell'emulatore. L'SDK di Android include un emulatore di dispositivo mobile ...


2
Scusate? Ho chiesto l'acquisizione di video in Android non su Mac o Emulatore.
Taranfx,

2
MWR suggerisce l'acquisizione dello schermo Android tramite l'emulatore
Ollie C

3
Nell'emulatore non è possibile eseguire tutte le aps.
RajV,

4

Il mio consiglio è anche di usare uno screen recorder, come SMRecorder. Invece di usare l'emulatore, che è lento - specialmente per giochi e cose di cui vorresti un video, ti consiglio di usare una VirtualBox VM, con Android installato. Puoi collegare il debugger Dalvik ad esso e eseguire il debug della tua app lì. Se il debugger rallenta troppo l'app, scollegala per registrare il video. Esistono molti collegamenti che spiegano come configurare la VM Android per il debug. Lo trovo molto meglio dell'emulatore. Ora questo non si occupa di catturare schermate direttamente sul dispositivo, nel caso in cui l'app utilizzi l'accelerometro o la fotocamera che non sono disponibili sul PC. Per questo vorrei utilizzare l'app Android Market di cui sopra.


per buona misura: spkaa.com/…
Reuben L.

3

Immagino che screencast non sia causa di incompatibilità con tegra 2, l'ho già provato, ma niente siero di latte! Quindi ho provato a utilizzare Z-ScreeNRecorder dal mercato, l'ho installato sul mio LG Optimus 2x, ma registra l'unico schermo vuoto, ho provato per 5 minuti. e lì ottengo 5 minuti. di file di schermo vuoto di dimensioni 6mb ... quindi non c'è motivo di provare fino a quando non rilasciano un po 'di software compatibile con il chipset tegra2!



1

È possibile registrare video dello schermo direttamente dal telefono o dal tablet se il dispositivo è rootato. Sto lavorando all'app SCR Screen Recorder . Per quanto ne so, questa è l'unica app che supporta i dispositivi Tegra (incluso Nexus 7) e Android 4.2. Al momento l'app registra tra 9-18 fps a seconda del dispositivo, ma sto lavorando per migliorarlo. SCR Screen Recorder è ancora in fase di beta testing, quindi sentiti libero di testarlo e dare un feedback.


1
Condividi la tua ricerca come può essere fatto programmaticamente in Android per catturare silenziosamente il vice dello schermo?
Ajay S

@Iwo Puoi condividere le tue ricerche su come registrare grammaticamente i video sullo schermo? Grazie.
Srini Kandula,

1

Il mirroring AirPlay e la registrazione dello schermo sono ora in CyanogenMod con Mirror APK (Beta).


1

Se sviluppi applicazioni per videocamere, sarà utile conoscere l'API da utilizzare per l'acquisizione di video:

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

(il link sopra mostra solo come è possibile eseguire la registrazione video tramite l'invio di Intent, non come viene effettuata la registrazione effettiva)

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

e se vuoi scrivere tu stesso l'applicazione adb "screenrecord":

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

E l'azione di registrazione dei tasti viene eseguita qui:

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

Per il telefono Samsung ci sono impostazioni aggiuntive (hack 'cam_mode'):

La risoluzione CamcorderProfile.QUALITY_HIGH produce video con sfarfallio verde

Altri link utili:

Come posso acquisire una registrazione video su Android?


1

Non l'ho implementato, ma ti sto ancora dando un'idea per farlo.

Prima di tutto ottenere il codice per fare uno screenshot del dispositivo Android . E chiama la stessa funzione per creare immagini dopo un intervallo di volte. Aggiungi quindi trova il codice per creare video da cornici / immagini .

modificare

vedi anche questo link e modificalo in base alle dimensioni dello schermo. L'importante è dividere il tuo lavoro in diverse piccole attività e poi combinarlo secondo le tue necessità.

FFMPEG è il modo migliore per farlo. ma una volta ho provato ma è una procedura molto lunga. Per prima cosa devi scaricare la libreria cygwin e Native C ++ e molte altre cose e connetterti, quindi sei in grado di lavorare su FFMPEG (è costruito in C ++).


Ho fatto lo stesso che mi hai suggerito di scattare foto dopo un intervallo di tempo o senza intervallo, ho una vista a scorrimento in cui sto facendo lo scorrimento e in un altro thread sto catturando un'area dello schermo, ma una stessa cattura è restituisce per 6-7 immagini e poi viene catturata un'altra area diversa. Ho bisogno di una sequenza completa di immagini.
Farrakh Javed,

1

Dai un'occhiata a Remote Manager . Ma mi sembra che non funzioni correttamente con i dispositivi che hanno un grande schermo. Tuttavia, puoi provare DEMO prima.


Entrambi i collegamenti sono morti: /
rahulserver il

@rahulserver, Google li ha bloccati, perché li ho usati Androidin nome del programma. Presto li pubblicherò di nuovo senza Androidparole.
Nolesh,

grazie per aver risposto. Ho un disperato bisogno, quindi avvisa qui una volta che hai pubblicato.
rahulserver,

@rahulserver, li ho pubblicati di nuovo e ho corretto i collegamenti.
Nolesh,

1

Se vuoi registrare la navigazione dell'utente in modo da poter testare l'interfaccia utente e altre cose, ti consiglio di usare TestFairy

Ti consente di inviare l'apk ad alcuni utenti di test tramite e-mail e di vedere un video con tutte le sessioni nell'app e persino gli arresti anomali dell'app e le statistiche del dispositivo.


1

In Android Lollipop (5) è stata aggiunta una nuova funzionalità che consente l'acquisizione dello schermo, che è spiegato qui

Ecco un esempio

Chiama startActivityForResult in questo modo

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Quindi acquisire il risultato

@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

Questo è vecchio, ma per quanto riguarda ASC ?


A causa dell'incompatibilità con i dispositivi alimentati da Tegra? .. sì .. ho un Asus Transformer: C
Richard Cotrina,

Richiede l'esecuzione di un 'attivatore' sul PC / Mac, ma non è firmato e non spiega cosa fa né come eseguire manualmente l'attivazione. Sembra un rischio per la sicurezza e un vettore di minaccia.
Chloe,

0

Se utilizzi un PC, puoi eseguire My Phone Explorer sul PC, MyPhoneExplorer Client sul telefono, impostare l'acquisizione dello schermo per l'aggiornamento continuo e utilizzare Wink per acquisire un'area rettangolare personalizzata dello schermo sopra la finestra di My Phone Explorer con la tua velocità di acquisizione. Quindi convertire in un file FLV in Wink, quindi convertire da video Flash in MPG con WinFF .


Va aggiunto che "PC" qui significa una sorta di Microsoft Windows.
primo

0

Non ho usato l'app, ma ho visto il reg. indicato come un modo per farlo, ma è necessario eseguire il root del telefono.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.