Kaydetme ve Oynatma API'si, video ve AR verilerini belirli bir ortamda bir kez kaydetmenizi ve bu içeriği bir canlı kamera oturumunun yerine kullanmanızı sağlar.
Ön koşullar
Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.
Diğer ARCore API'leriyle uyumluluk
ARCore API'leri, oturum verilerinin işlenme şekli nedeniyle oynatma sırasında kayıt sırasında gözlemlenenden farklı sonuçlar üretebilir. Sonraki oynatma oturumlarında da farklı sonuçlar üretebilirler. Örneğin, algılanan izlenebilirlerin sayısı, algılanma zamanının tam zamanı ve pozları, oynatma sırasında zaman içinde farklı olabilir.
Cloud Anchor'larla uyumluluk
Cloud Anchor'ı, bir oturum kaydederken veya oynatırken barındırabilir ve çözebilirsiniz.
Kayıt
ARCore oturum kaydını başlatabilir, durdurabilir ve durumunu kontrol edebilirsiniz.
ARCore oturumu kaydet
ARCore oturumu kaydetmek için oturumu yapılandırın ve kayıt için bir MP4 URI'si sağlayın. ArSession_resume()
numaralı telefona yapılan ilk aramadan önce ArSession_startRecording()
numaralı telefonu arayın. Kayıt, oturum devam ettiğinde otomatik olarak başlar. Oturum duraklatıldığında kaydı otomatik olarak durdurmak için ArRecordingConfig_setAutoStopOnPause()
numaralı telefonu arayın. Kısmi bir oturumu kaydetmek için oturum devam ederken ArSession_startRecording()
numaralı telefonu arayın.
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));
Kaydı durdurma
Şu anda çalışan AR oturumunu duraklatmadan kaydı durdurmak için ArSession_stopRecording()
ve ArRecordingConfig_destroy()
numaralı telefonu arayın.
ArStatus status = ArSession_stopRecording(ar_session); ArRecordingConfig_destroy(recording_config);
Kayıt durumunu kontrol edin
ArSession_getRecordingStatus()
, geçerli ArRecordingStatus
değerini belirlemek için herhangi bir zamanda kullanılabilir.
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. }
Oynatma
Önceden kaydedilmiş AR oturumlarını oynatın. Oturumlar gerçek zamanlı olarak oynatılır. Oturum oynatma veya hız ayarlanamaz.
Önceden kaydedilmiş bir oturumu tekrar oynatma
Önceden kaydedilmiş bir oturumu oynatmak için ilk ArSession_resume()
çağrısından önce ArSession_setPlaybackDatasetUri()
numaralı telefonu arayın.
ArSession_resume()
'e yapılan ilk çağrı nedeniyle oynatma başladıktan sonra, ArSession_pause()
çağrısı yapılarak oturum duraklatıldığında, tüm kamera görüntüsü karelerinin ve veri kümesinde kayıtlı diğer sensör verilerinin işlenmesini askıya alınır. Bu şekilde silinen kamera görüntü çerçeveleri ve sensör çerçevesi verileri, ArSession_resume()
çağrısı yapılarak oturum tekrar devam ettirildiğinde yeniden işlenmez. Oturumla ilgili AR takibi genellikle işlenen verilerdeki boşluktan dolayı sorun yaşar.
// 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));
Oynatmayı baştan başlat
Bir oynatmayı veri kümesinin başından yeniden başlatmak için oturumu devam ettirmeden önce oturumu duraklatın ve aynı MP4 kaydını belirterek ArSession_setPlaybackDatasetUri()
araması yapın.
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));
Farklı bir oturum oynat
Farklı bir veri kümesini oynatmak için oturumu devam ettirmeden önce oturumu duraklatın ve yeni veri kümesini belirtin.
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));
Oynatma durumunu kontrol etme
Mevcut ArPlaybackStatus
sürümünü belirlemek için istediğiniz zaman ArSession_getPlaybackStatus()
aracını kullanabilirsiniz.
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. }
Sonraki adımlar
- Kayıtlı oturumlara nasıl özel veriler ekleyeceğinizi öğrenin.