L'API Recording & Playback consente di registrare dati video e AR una sola volta all'interno di un determinato ambiente e di utilizzare questi contenuti per sostituire una sessione in diretta della videocamera.
Prerequisiti
Assicurati di aver compreso i concetti fondamentali di AR e di configurare una sessione ARCore prima di procedere.
Compatibilità con altre API ARCore
A causa del modo in cui i dati delle sessioni vengono elaborati, le API ARCore potrebbero produrre risultati diversi durante la riproduzione rispetto a quelli osservati durante la registrazione. Inoltre, potrebbero produrre risultati diversi durante sessioni di riproduzione successive. Ad esempio, il numero di elementi tracciabili rilevati, la tempistica precisa del loro rilevamento e le relative pose nel tempo potrebbero essere diversi durante la riproduzione.
Compatibilità con gli ancoraggi Cloud
Puoi ospitare e risolvere gli ancoraggi Cloud durante la registrazione o la riproduzione di una sessione.
Registrazione in corso…
Avvia, interrompi e controlla lo stato della registrazione di una sessione ARCore.
Registrare una sessione ARCore
Per registrare una sessione ARCore, configurala e fornisci un URI MP4 per la registrazione. Chiama il numero ArSession_startRecording()
prima della prima chiamata al numero ArSession_resume()
. La registrazione inizia automaticamente quando la sessione riprende. Per interrompere automaticamente la registrazione quando la sessione è in pausa, chiama il numero ArRecordingConfig_setAutoStopOnPause()
. Per registrare una sessione parziale, chiama ArSession_startRecording()
mentre la sessione è in esecuzione.
ArRecordingConfig* recording_config = nullptr; ArRecordingConfig_create(ar_session, &recording_config); ArRecordingConfig_setMp4DatasetUri(ar_session, recording_config, mp4_dataset_uri); ArRecordingConfig_setAutoStopOnPause(ar_session, recording_config, true); CHECK(ArSession_startRecording(ar_session, recording_config)); // … // Resume ARCore session to start recording. CHECK(ArSession_resume(ar_session)); // … // Recording ends. CHECK(ArSession_pause(ar_session));
Interrompere una registrazione
Per interrompere la registrazione senza sospendere la sessione AR attualmente in esecuzione, chiama
ArSession_stopRecording()
e ArRecordingConfig_destroy()
.
ArStatus status = ArSession_stopRecording(ar_session); ArRecordingConfig_destroy(recording_config);
Controllare lo stato della registrazione
ArSession_getRecordingStatus()
può essere utilizzato in qualsiasi momento per determinare l'attuale ArRecordingStatus
.
ArRecordingStatus recording_status; // Can be called at any time. ArSession_getRecordingStatus(ar_session, &recording_status); if (recording_status == AR_RECORDING_NONE) { // The dataset recorder is not recording. } else if (recording_status == AR_RECORDING_OK) { // The dataset recorder is recording normally. } else if (recording_status == AR_RECORDING_IO_ERROR) { // The dataset recorder encountered an error while recording. }
Riproduzione
Riprodurre le sessioni AR registrate in precedenza. Le sessioni vengono riprodotte in tempo reale e la riproduzione o la velocità della sessione non possono essere regolate.
Riprodurre una sessione registrata in precedenza
Per riprodurre una sessione registrata in precedenza, chiama il numero ArSession_setPlaybackDatasetUri()
prima della prima chiamata al numero ArSession_resume()
.
Una volta avviata la riproduzione a causa della prima chiamata al numero ArSession_resume()
, se metti in pausa la sessione chiamando ArSession_pause()
, verrà sospesa l'elaborazione di tutti i fotogrammi delle immagini della videocamera e di tutti gli altri dati dei sensori registrati nel set di dati. Le cornici delle immagini della videocamera e i dati dei fotogrammi del sensore eliminati in questo modo non verranno rielaborati quando la sessione verrà ripresa di nuovo chiamando ArSession_resume()
. Il monitoraggio AR della sessione è generalmente interessato dalla carenza di dati elaborati.
// Specify previously recorded MP4 file. CHECK(ArSession_setPlaybackDatasetUri(ar_session, mp4_dataset_uri)); // … // Playback starts from the beginning of the dataset. CHECK(ArSession_resume(ar_session)); // … // Pause AR session, but allow playback to silently continue. CHECK(ArSession_pause(ar_session)); // … // Resume AR session. Playback continues with gap to paused session. CHECK(ArSession_resume(ar_session));
Riavvia la riproduzione dall'inizio
Per riavviare una riproduzione dall'inizio del set di dati, metti in pausa la sessione e chiama ArSession_setPlaybackDatasetUri()
, specificando la stessa registrazione MP4, prima di riprendere la sessione.
CHECK(ArSession_pause(ar_session)); // Pause and specify the *same* dataset: CHECK(ArSession_setPlaybackDatasetUri(ar_session, mp4_dataset_uri)); // Playback starts from the *beginning* of the dataset. CHECK(ArSession_resume(ar_session));
Riprodurre una sessione diversa
Per riprodurre un set di dati diverso, metti in pausa la sessione e specifica il nuovo set di dati prima di riprendere la sessione.
CHECK(ArSession_pause(ar_session)); // Pause and specify a *different* dataset: CHECK(ArSession_setPlaybackDatasetUri(ar_session, other_mp4_dataset_uri)); // Playback starts from the *beginning* of the new dataset. CHECK(ArSession_resume(ar_session));
Controllare lo stato della riproduzione
Utilizza ArSession_getPlaybackStatus()
in qualsiasi momento per determinare l'attuale ArPlaybackStatus
.
ArPlaybackStatus playback_status; // Can be called at any time. ArSession_getPlaybackStatus(ar_session, &playback_status); if (playback_status == AR_PLAYBACK_NONE) { // The session is not playing back an MP4 dataset file. } else if (playback_status == AR_PLAYBACK_OK) { // Playback is in process without issues. } else if (playback_status == AR_PLAYBACK_IO_ERROR) { // Playback has stopped due to an error. } else if (playback_status == AR_PLAYBACK_FINISHED) { // Playback has finished successfully. }
Passaggi successivi
- Scopri come aggiungere dati personalizzati alle sessioni registrate.