Kayıt ve Playback API'si, video ve AR verilerini belirli bir ortamda bir kez kaydedip bu içeriği canlı kamera oturumu yerine kullanmanızı sağlar.
Ön koşullar
Temel artırılmış gerçeklik kavramlarını anladığınızdan emin olun ve devam etmeden önce ARCore oturumunun nasıl yapılandırılacağı hakkında daha fazla bilgi edinin.
Diğer ARCore API'leriyle uyumluluk
Oturum verilerinin işlenme biçimi nedeniyle, ARCore API'leri oynatma sırasında kayıt sırasında gözlemlenenden farklı sonuçlar üretebilir. Ayrıca sonraki oynatma oturumlarında farklı sonuçlar üretebilirler. Örneğin, tespit edilen izlenebilir içeriklerin sayısı, tespit edilmelerinin tam zamanlaması ve zaman içindeki duruşları, oynatma sırasında farklı olabilir.
Cloud Anchor ile uyumluluk
Bir oturumu kaydederken veya oynatırken Cloud Anchor'larını barındırabilir ve çözümleyebilirsiniz.
Kayıt
ARCore oturum kaydını başlatın, durdurun ve durumunu kontrol edin.
ARCore oturumunu kaydetme
ARCore oturumunu 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()
adlı kişiyi arayın. Oturum devam ettiğinde kayıt 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()
numarasını 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 devam eden AR oturumunu duraklatmadan kaydı durdurmak için şu numarayı arayın:
ArSession_stopRecording()
ve ArRecordingConfig_destroy()
.
ArStatus status = ArSession_stopRecording(ar_session); ArRecordingConfig_destroy(recording_config);
Kayıt durumunu kontrol edin
ArSession_getRecordingStatus()
mevcut ArRecordingStatus
değerini belirlemek için 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 kaydedilen AR oturumlarını oynatma. Oturumlar gerçek zamanlı olarak oynatılır ve oturum oynatma veya hızı ayarlanamaz.
Daha önce kaydedilmiş bir oturumu oynatma
Daha önce kaydedilmiş bir oturumu oynatmak için şu numarayı arayın:
ArSession_setPlaybackDatasetUri()
yapılacak ilk çağrıdan önce
ArSession_resume()
.
ArSession_resume()
için yapılan ilk çağrı nedeniyle oynatma başladıktan sonra ArSession_pause()
numaralı telefonu arayarak oturumu duraklatmak, tüm kamera görüntü çerçevelerinin ve veri kümesinde kayıtlı diğer tüm sensör verilerinin işlenmesini askıya alır. Bu şekilde silinen kamera görüntü çerçeveleri ve sensör çerçevesi verileri, ArSession_resume()
çağrısı yapılarak oturum yeniden başlatıldığında yeniden işlenmez. Oturumun AR izlemesi genellikle işlenen verilerdeki boşluk nedeniyle yaşanır.
// 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 yeniden başlat
Bir oynatmayı veri kümesinin başından yeniden başlatmak için oturumu duraklatın ve
telefon etmek
ArSession_setPlaybackDatasetUri()
ve oturumu devam ettirmeden önce aynı MP4 kaydını belirtin.
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 oturumu oynat
Farklı bir veri kümesini oynatmak için 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
Tekliflerinizi otomatikleştirmek ve optimize etmek için
ArSession_getPlaybackStatus()
kullanarak mevcut
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. }
Sırada ne var?
- Kayıtlı oturumlara nasıl özel veri ekleyeceğinizi öğrenin.