Le funzionalità di registrazione e L'API Playback ti consente di registrare video e dati AR una sola volta in un determinato ambiente e di utilizzare quei contenuti per sostituire una sessione di videocamera in diretta.
Prerequisiti
Assicurati di comprendere i concetti fondamentali della realtà aumentata e su come configurare una sessione ARCore prima di procedere.
Compatibilità con altre API ARCore
A causa della modalità di elaborazione dei dati della sessione, le API ARCore potrebbero produrre risultati diversi durante la riproduzione rispetto a quelli osservati durante la registrazione. Potrebbero anche produrre risultati diversi durante sessioni di riproduzione successive. Ad esempio, il numero di dispositivi tracciabili rilevati, la tempistica esatta del loro rilevamento e le loro pose nel tempo potrebbero variare durante la riproduzione.
Compatibilità con gli ancoraggi Cloud
Puoi ospitare e risolvere i problemi Cloud Anchor durante la registrazione o la riproduzione di una sessione.
Registrazione
Avviare, interrompere e controllare lo stato della registrazione di una sessione ARCore.
Registrare una sessione ARCore
Per registrare una sessione ARCore, configura la sessione e fornisci un URI MP4 per la registrazione. Chiama 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 viene sospesa, chiama 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 mettere in pausa 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à delle sessioni non possono essere regolate.
Riprodurre una sessione registrata in precedenza
Per riprodurre una sessione registrata in precedenza, richiama
ArSession_setPlaybackDatasetUri()
prima della prima chiamata a
ArSession_resume()
.
Una volta avviata la riproduzione a causa della prima chiamata a ArSession_resume()
, la sospensione della sessione chiamando ArSession_pause()
sospenderà l'elaborazione di tutti i frame immagine della videocamera e di qualsiasi altro dato del sensore registrato nel set di dati. Le cornici delle videocamere e i dati dei frame del sensore che vengono eliminati in questo modo non verranno rielaborati quando la sessione verrà ripresa di nuovo chiamando il numero ArSession_resume()
. Il monitoraggio AR per la sessione in genere ne risentirà a causa della 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
chiamata
ArSession_setPlaybackDatasetUri()
,
che specifica 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 le funzionalità di
ArSession_getPlaybackStatus()
in qualsiasi momento per determinare lo stato 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.