Merekam file EIF di Unity
Artikel ini menjelaskan cara merekam file EIF di Unity untuk digunakan dalam simulasi.
Sebelum memulai
- Pahami konsep dasar merekam file EIF dan menggunakannya untuk simulasi
- Pahami konsep dasar, komponen, dan alur kerja AR Session
- Pelajari cara mengakses komponen perekaman melalui mengakses komponen fungsional AR di session
Memulai perekaman
Gunakan FrameRecorder.enabled = true untuk memulai perekaman, contoh:
if (Session.State >= ARSession.SessionState.Ready && Session.Assembly.FrameRecorder.OnSome)
{
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.enabled = true;
}
Perlu diperhatikan, di sini perlu memeriksa apakah ARAssembly.FrameRecorder ada.
Catatan
ARAssembly.FrameRecorder dalam beberapa kasus, seperti saat menggunakan FramePlayer, tidak dapat digunakan.
FrameRecorder.enabled nilai default adalah false, yang berarti perekaman dalam keadaan mati, bahkan jika dikonfigurasi secara manual di editor juga tidak efektif.
Perekaman akan dimulai saat session berjalan, ketika FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready.
Jika FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready, Anda dapat menggunakan event OnReady untuk menunggu perekaman siap.
Session.GetComponent<FrameRecorder>().OnReady.AddListener(() => {
// dapat memulai perekaman
});
Anda dapat menggunakan event OnRecording untuk mengonfirmasi keberhasilan memulai:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
Kegagalan memulai tidak memicu event apa pun, tetapi dapat dikonfirmasi dengan memeriksa apakah FrameRecorder.Status adalah Error.
Penting
Efek berjalan saat memutar EIF di scene terkait dengan perangkat yang digunakan untuk merekam dan frame source yang dipilih pada perangkat saat itu. Oleh karena itu, saat merekam file EIF, disarankan menggunakan perangkat yang sama atau mendekati perangkat target untuk merekam, sehingga memastikan efek saat pemutaran konsisten dengan efek pada perangkat target. Perlu juga memperhatikan apakah fungsi pelacakan gerak diaktifkan dalam scene perekaman. Jika fungsi pelacakan gerak tidak diaktifkan saat merekam, maka tidak dapat diaktifkan saat pemutaran, dan fungsi AR yang bergantung pada pelacakan gerak (seperti peta ruang padat, Mega, dll.) juga tidak dapat bekerja konsisten seperti pada perangkat.
Menghentikan perekaman
Gunakan FrameRecorder.enabled = false untuk menghentikan perekaman, contoh:
frameRecorder.enabled = false;
Operasi ini akan segera menghentikan perekaman dan memblokir hingga penulisan file selesai.
Penting
Harus memanggil stop recording, jika tidak penulisan file rekaman tidak lengkap, akan menyebabkan beberapa fungsi atau seluruh file tidak dapat digunakan:
Penyimpanan dan ekspor file
Anda dapat menggunakan event OnRecording untuk mendapatkan jalur lengkap file rekaman:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
Dengan konfigurasi default, file rekaman akan disimpan di jalur data persisten aplikasi, yang dapat diakses melalui Application.persistentDataPath.
Anda dapat mengubah jalur penyimpanan file rekaman melalui FrameRecorder.Configuration.FilePath. Jalur ini harus diatur sebelum memulai perekaman, dan perlu menonaktifkan AutoFilePath agar efektif. Direktori perlu dibuat terlebih dahulu.
Penting
Harus memastikan direktori penyimpanan file rekaman ada dan aplikasi dapat menulis, jika tidak perekaman akan gagal saat dimulai.
Misalnya, kode berikut menunjukkan cara menyimpan file rekaman di direktori kustom, dan menghasilkan nama file berdasarkan tipe 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 dapat di editor, pilih AR Session (EasyAR), di jendela Inspector hapus centang Auto File Path Frame Recorder lalu konfigurasi:

Kiat
Melalui FrameRecorder.RecordingConfiguration.FilePath Anda dapat mengubah direktori penyimpanan dan nama file (tanpa ekstensi), ekstensi file akan ditambahkan secara otomatis berdasarkan format perekaman.
Jika file disimpan di jalur data persisten aplikasi atau jalur pribadi aplikasi lainnya, Anda dapat mengekspor file ke komputer dengan cara berikut:
- Di platform Android, Anda dapat menghubungkan komputer melalui USB, lalu menggunakan
adb pullatau cara lain untuk mengekspor file ke komputer, file biasanya berada di/sdcarad/Android/data/<app package name>/files. - Di platform iOS, Anda dapat mengekspor file ke komputer melalui jendela Devices Xcode, atau melalui berbagi file iTunes atau Finder untuk mengakses direktori pribadi aplikasi.
- Melalui kode menyimpan file ke direktori publik, seperti direktori unduhan Android atau album foto iOS, dll.
Catatan
Untuk aplikasi iOS, jika ingin mengakses direktori pribadi aplikasi melalui berbagi file iTunes atau Finder, sebelum membangun, Anda perlu menambahkan kunci UIFileSharingEnabled di Info.plist proyek XCode, dan atur nilainya menjadi YES:

Teks yang ditampilkan setelah ditambahkan berbeda dengan string yang ditambahkan, ini normal.
Mengganti format perekaman
Ubah format perekaman melalui FrameRecorder.Configuration.Format, harus diatur sebelum memulai perekaman.
Misalnya, kode berikut menunjukkan cara memaksa format perekaman menjadi H264:
frameRecorder.Configuration.Format = FrameRecorder.InternalFormat.H264;
Anda juga dapat di editor, pilih AR Session (EasyAR), di jendela Inspector ubah Format:

Catatan
H264 tidak dapat digunakan di beberapa perangkat (seperti Windows), umumnya disarankan menggunakan Auto, sehingga akan memilih format yang sesuai secara otomatis berdasarkan perangkat.
Catatan
Di XREAL, menggunakan format Obsolete untuk merekam data tidak dapat digunakan untuk simulasi, digunakan dan hanya digunakan untuk melaporkan masalah.
Anda dapat menggunakan RecordingFormat untuk melihat format perekaman saat ini.
Rekam otomatis saat memulai session
Atur AutoStart menjadi true sebelum memulai session, dapat memulai perekaman saat session dimulai, contoh:
frameRecorder.AutoStart = true;
Anda juga dapat di editor, pilih AR Session (EasyAR), di jendela Inspector centang Auto Start Frame Recorder:

Catatan
Mengubah FrameRecorder.enabled di editor tidak efektif.
Data yang dapat digunakan untuk Mega
Saat menggunakan Mega, ada beberapa persyaratan khusus untuk konten file EIF dan terkait, di plugin Unity versi lama tidak terintegrasi fungsi terkait, data yang direkam di versi tersebut tidak dapat digunakan untuk Mega.
Data yang direkam dalam situasi berikut dapat digunakan untuk Mega:
- Data yang direkam menggunakan plugin Unity 4000 atau lebih tinggi
- Data yang direkam menggunakan Mega Toolbox
- Jika data direkam menggunakan format Obsolete, misalnya file
x.eif, perlu ada filex.eif.jsondi direktori yang sama untuk dapat digunakan
Data yang direkam dalam situasi berikut tidak dapat digunakan untuk Mega:
- Data yang direkam menggunakan plugin Unity 4.6 atau lebih rendah
- Menggunakan EasyAR Sense native, dan tidak menambahkan data yang sama seperti di plugin Unity
Selain itu, meskipun Mega dapat bekerja tanpa menggunakan pelacakan gerak, efek berjalannya berbeda. Disarankan untuk mengaktifkan fungsi pelacakan gerak saat merekam file EIF, sehingga memastikan efek saat pemutaran dapat memenuhi sebagian besar skenario penggunaan.