Merekam file EIF di Unity
Artikel ini menjelaskan cara merekam file EIF di Unity agar dapat digunakan untuk simulasi.
Sebelum memulai
- Memahami konsep dasar merekam file EIF dan menggunakannya untuk simulasi
- Memahami konsep dasar, komposisi, dan alur kerja AR Session
- Memahami cara mengakses komponen perekaman melalui mengakses komponen AR dalam session
Memulai perekaman
Gunakan FrameRecorder.enabled = true untuk memulai perekaman, misalnya:
if (Session.State >= ARSession.SessionState.Ready && Session.Assembly.FrameRecorder.OnSome)
{
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.enabled = true;
}
Perlu diperhatikan bahwa Anda harus terlebih dahulu memeriksa apakah ARAssembly.FrameRecorder ada.
Catatan
ARAssembly.FrameRecorder tidak dapat digunakan dalam beberapa kondisi, misalnya saat menggunakan FramePlayer.
Nilai default FrameRecorder.enabled adalah false, yang berarti perekaman dimatikan; bahkan jika dikonfigurasi manual di editor, itu tidak akan berpengaruh.
Perekaman hanya akan dimulai saat selama session berjalan FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready.
Jika FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready, Anda dapat menggunakan event OnReady untuk menunggu hingga perekaman siap.
Session.GetComponent<FrameRecorder>().OnReady.AddListener(() => {
// Perekaman bisa dimulai
});
Anda dapat menggunakan event OnRecording untuk memastikan perekaman berhasil dimulai:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
Jika perekaman gagal dimulai, tidak ada event yang dipicu, tetapi Anda bisa memeriksa apakah FrameRecorder.Status adalah Error untuk memastikannya.
Penting
Hasil eksekusi saat memutar EIF di dalam scene bergantung pada perangkat yang digunakan saat merekam dan frame source yang dipilih saat itu. Karena itu, saat merekam EIF disarankan menggunakan perangkat yang sama atau mendekati perangkat target, agar efek pemutaran konsisten dengan efek pada perangkat target. Perlu juga diperhatikan apakah fungsi pelacakan gerak di scene saat merekam aktif. Jika saat merekam fungsi itu tidak aktif, maka saat pemutaran juga tidak bisa diaktifkan, dan fungsi AR yang bergantung pada pelacakan gerak (misalnya pemetaan ruang padat, Mega, dll.) juga tidak akan bekerja seperti pada perangkat.
Menghentikan perekaman
Gunakan FrameRecorder.enabled = false untuk menghentikan perekaman, misalnya:
frameRecorder.enabled = false;
Operasi ini akan langsung menghentikan perekaman dan memblokir hingga penulisan file selesai.
Penting
Anda harus memanggil penghentian perekaman; jika tidak, file hasil rekaman akan tidak lengkap dan beberapa fungsi atau bahkan seluruh file tidak dapat digunakan:
Penyimpanan dan ekspor file
Anda dapat menggunakan event OnRecording untuk mendapatkan jalur asli lengkap file yang direkam:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
Dengan konfigurasi default, file rekaman akan disimpan di persistent data path aplikasi, yang dapat diakses melalui Application.persistentDataPath.
Anda dapat mengubah jalur penyimpanan melalui FrameRecorder.Configuration.FilePath. Jalur ini harus diatur sebelum perekaman dimulai, dan baru berlaku setelah AutoFilePath dimatikan. Direktori harus dibuat terlebih dahulu.
Penting
Direktori penyimpanan file rekaman harus ada dan dapat ditulis oleh aplikasi; jika tidak, perekaman akan gagal saat dimulai.
Sebagai contoh, kode berikut menunjukkan cara menyimpan file rekaman di direktori kustom dan membuat nama file berdasarkan jenis FrameSource yang digunakan session dan waktu saat ini:
if (!Directory.Exists(SavePath))
{
Directory.CreateDirectory(SavePath);
}
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.Configuration.AutoFilePath = false;
frameRecorder.Configuration.FilePath.Type = WritablePathType.Absolute;
frameRecorder.Configuration.FilePath.FolderPath = SavePath;
frameRecorder.Configuration.FilePath.FileName = ARSessionFactory.DefaultName(Session.Assembly.FrameSource.GetType()).Replace(" ", "") + DateTime.Now.ToString("_yyyy-MM-dd_HH-mm-ss.fff");
frameRecorder.enabled = true;
Anda juga bisa mengaturnya di editor dengan memilih AR Session (EasyAR), lalu di jendela Inspector hapus centang Auto File Path pada Frame Recorder dan atur sisanya:

Kiat
Anda dapat mengubah direktori penyimpanan dan nama file (tanpa ekstensi) melalui FrameRecorder.RecordingConfiguration.FilePath; ekstensi file akan ditambahkan otomatis sesuai format perekaman.
Jika file disimpan di persistent data path aplikasi atau jalur privat aplikasi lainnya, Anda dapat mengekspornya ke komputer dengan cara berikut:
- Di Android, sambungkan perangkat ke komputer melalui USB lalu gunakan
adb pullatau cara lain untuk mengekspor file; biasanya file berada di/sdcarad/Android/data/<app package name>/files. - Di iOS, gunakan jendela Devices di Xcode untuk mengekspor file ke komputer, atau akses direktori privat aplikasi melalui file sharing iTunes atau Finder.
- Simpan file ke direktori publik melalui kode, misalnya folder Unduhan di Android atau Foto di iOS.
Catatan
Untuk aplikasi iOS, jika Anda ingin mengakses direktori privat aplikasi melalui file sharing iTunes atau Finder, sebelum packaging Anda perlu menambahkan kunci UIFileSharingEnabled ke Info.plist proyek Xcode dan mengaturnya ke YES:

Teks yang ditampilkan setelah penambahan berbeda dari string yang dimasukkan; itu normal.
Mengubah format perekaman
Ubah format perekaman melalui FrameRecorder.Configuration.Format, dan harus diatur sebelum perekaman dimulai.
Contohnya, kode berikut memaksa format perekaman menjadi H264:
frameRecorder.Configuration.Format = FrameRecorder.InternalFormat.H264;
Anda juga dapat mengaturnya di editor dengan memilih AR Session (EasyAR) dan mengubah Format di jendela Inspector:

Catatan
H264 tidak dapat digunakan pada beberapa perangkat (misalnya Windows); biasanya disarankan menggunakan Auto, yang akan memilih format yang sesuai secara otomatis sesuai perangkat.
Catatan
Di XREAL, data yang direkam dengan format Obsolete tidak dapat digunakan untuk mensimulasikan eksekusi; format ini hanya boleh digunakan untuk melaporkan masalah.
Anda dapat menggunakan RecordingFormat untuk melihat format perekaman saat ini.
Perekaman otomatis saat session dimulai
Jika Anda mengatur AutoStart menjadi true sebelum session dimulai, perekaman akan dimulai saat session dimulai, misalnya:
frameRecorder.AutoStart = true;
Anda juga dapat melakukannya di editor dengan memilih AR Session (EasyAR) lalu mencentang Auto Start pada Frame Recorder:

Catatan
Mengubah FrameRecorder.enabled di editor tidak berpengaruh.
Data yang bisa digunakan untuk Mega
Saat menggunakan Mega, ada beberapa persyaratan khusus untuk EIF dan file terkait. Pada versi lama plugin Unity, fitur-fitur ini belum terintegrasi, dan data yang direkam dengan versi tersebut tidak dapat digunakan untuk Mega.
Data rekaman dapat digunakan untuk Mega dalam kasus berikut:
- Data direkam dengan Unity Plugin versi 4000 atau lebih tinggi
- Data direkam dengan Mega Toolbox
- Jika data direkam dengan format Obsolete, misalnya file
x.eif, maka filex.eif.jsonjuga harus ada di direktori yang sama agar bisa digunakan
Data rekaman tidak dapat digunakan untuk Mega dalam kasus berikut:
- Data direkam dengan Unity Plugin 4.6 atau lebih rendah
- Data direkam dengan EasyAR Sense native tanpa menambahkan konten yang sama seperti pada plugin Unity
Selain itu, walaupun Mega bisa bekerja tanpa pelacakan gerak, hasilnya akan berbeda. Disarankan untuk mengaktifkan fungsi pelacakan gerak saat merekam file EIF agar hasil pemutaran sesuai dengan sebagian besar skenario penggunaan.