Nagranie Odtwarzanie API pozwala jednorazowo nagrać dane wideo i AR w danym środowisku i wykorzystać te treści do zastąpienia sesji kamery na żywo.
Wymagania wstępne
Upewnij się, że znasz podstawowe pojęcia związane z AR. i dowiedz się, jak skonfigurować sesję ARCore, zanim przejdziesz dalej.
Zgodność z innymi interfejsami API ARCore
Ze względu na sposób przetwarzania danych sesji interfejsy ARCore API mogą podczas odtwarzania uzyskiwać inne wyniki niż zaobserwowane podczas nagrywania. Mogą też przynieść inne wyniki podczas kolejnych sesji odtwarzania. Na przykład liczba wykrytych elementów możliwych do śledzenia, dokładny czas wykrycia i ich pozycje w czasie mogą być inne podczas odtwarzania.
Zgodność z Cloud Anchors
Zakotwiczone elementy Cloud możesz hostować i rozwiązywać podczas nagrywania lub odtwarzania sesji.
Nagrywanie
Rozpoczynanie i zatrzymywanie nagrywania sesji ARCore oraz sprawdzanie ich stanu.
Nagrywanie sesji ARCore
Aby nagrać sesję ARCore, skonfiguruj sesję i podaj identyfikator URI nagrania w formacie MP4. Zadzwoń pod numer ArSession_startRecording()
przed pierwszym połączeniem z numerem ArSession_resume()
. Nagrywanie rozpocznie się automatycznie po wznowieniu sesji. Aby automatycznie przerwać nagrywanie po wstrzymaniu sesji, zadzwoń pod numer ArRecordingConfig_setAutoStopOnPause()
. Aby nagrać częściową sesję, wywołaj ArSession_startRecording()
w trakcie jej trwania.
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));
Zatrzymywanie nagrywania
Aby zatrzymać nagrywanie bez wstrzymania aktualnie uruchomionej sesji AR, wywołaj
ArSession_stopRecording()
i ArRecordingConfig_destroy()
.
ArStatus status = ArSession_stopRecording(ar_session); ArRecordingConfig_destroy(recording_config);
Sprawdź stan nagrywania
ArSession_getRecordingStatus()
może zostać w dowolnym momencie użyta do określenia bieżącego 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. }
Odtwarzanie
Odtwarzanie wcześniej nagranych sesji AR. Sesje są odtwarzane w czasie rzeczywistym. Nie można też dostosować odtwarzania ani szybkości transmisji w sesji.
Odtwarzanie wcześniej nagranej sesji
Aby odtworzyć nagraną wcześniej sesję, wywołaj
ArSession_setPlaybackDatasetUri()
przed pierwszym wywołaniem
ArSession_resume()
Po rozpoczęciu odtwarzania w związku z pierwszym wywołaniem funkcji ArSession_resume()
wstrzymanie sesji przez wywołanie metody ArSession_pause()
spowoduje zawieszenie przetwarzania wszystkich klatek zdjęć z aparatu i wszelkich innych danych z czujnika zarejestrowanych w zbiorze danych. Ramki zdjęcia z aparatu i dane z czujnika, które zostały odrzucone w ten sposób, nie zostaną przetworzone ponownie po ponownym wznowieniu sesji przez wywołanie metody ArSession_resume()
. Funkcja śledzenia AR w trakcie sesji będzie na ogół ucierpiała z powodu luk w przetworzonych danych.
// 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));
Wznów odtwarzanie od początku
Aby ponownie uruchomić odtwarzanie od początku zbioru danych, wstrzymaj sesję i
zadzwoń
ArSession_setPlaybackDatasetUri()
określenie tego samego nagrania MP4 przed wznowieniem sesji.
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));
Odtwórz inną sesję
Aby odtworzyć inny zbiór danych, wstrzymaj sesję i podaj nowy zbiór danych. przed wznowieniem sesji.
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));
Sprawdzanie stanu odtwarzania
Używaj
ArSession_getPlaybackStatus()
w dowolnym momencie, aby określić bieżącą
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. }
Co dalej?
- Dowiedz się, jak dodawać dane niestandardowe do nagranych sesji.