EIF-Dateien in Unity aufzeichnen
In diesem Artikel erfahren Sie, wie Sie EIF-Dateien in Unity aufzeichnen, damit Sie sie spater fur die Simulation verwenden konnen.
Vor dem Start
- Verstehen Sie die grundlegenden Konzepte von EIF-Dateien aufzeichnen und fur die Simulation verwenden
- Verstehen Sie die grundlegenden Konzepte, die Zusammensetzung und den Arbeitsablauf von AR Session
- Erfahren Sie uber AR-Funktionskomponenten in der Session aufrufen, wie Sie auf die Aufzeichnungs-Komponente zugreifen
Aufzeichnung starten
Verwenden Sie FrameRecorder.enabled = true, um die Aufzeichnung zu starten, zum Beispiel:
if (Session.State >= ARSession.SessionState.Ready && Session.Assembly.FrameRecorder.OnSome)
{
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.enabled = true;
}
Beachten Sie, dass hier zuerst gepruft werden muss, ob ARAssembly.FrameRecorder vorhanden ist.
Anmerkung
ARAssembly.FrameRecorder kann in seltenen Fallen nicht verwendet werden, zum Beispiel wenn FramePlayer genutzt wird.
Der Standardwert von FrameRecorder.enabled ist false, also ist die Aufzeichnung deaktiviert. Das bleibt auch dann so, wenn sie im Editor manuell konfiguriert wird.
Die Aufzeichnung beginnt erst, wenn wahrend der Session-Ausfuhrung FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready ist.
Wenn FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready ist, konnen Sie mit dem Ereignis OnReady warten, bis die Aufzeichnung bereit ist.
Session.GetComponent<FrameRecorder>().OnReady.AddListener(() => {
// Die Aufzeichnung kann jetzt starten
});
Mit dem Ereignis OnRecording konnen Sie den erfolgreichen Start bestatigen:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
Bei einem fehlgeschlagenen Start wird kein Ereignis ausgelost. Sie konnen jedoch prufen, ob FrameRecorder.Status den Wert Error hat.
Wichtig
Die Laufwirkung bei der Wiedergabe in der Szene hangt vom verwendeten Gerat und von der zum Zeitpunkt der Aufzeichnung auf dem Gerat gewahlten Frame Source ab. Deshalb empfiehlt es sich, EIF-Dateien mit demselben oder einem ahnlichen Gerat aufzuzeichnen, damit die Wiedergabe mit der Wirkung auf dem Zielgerat ubereinstimmt. Achten Sie außerdem besonders darauf, ob die Motion-Tracking-Funktion in der Aufzeichnungsszene aktiviert war. Wenn Motion Tracking bei der Aufzeichnung nicht aktiviert war, kann es auch bei der Wiedergabe nicht aktiviert werden, und AR-Funktionen, die davon abhangen (zum Beispiel Dense Spatial Map oder Mega), verhalten sich dann nicht wie auf dem Gerat.
Aufzeichnung stoppen
Verwenden Sie FrameRecorder.enabled = false, um die Aufzeichnung zu stoppen, zum Beispiel:
frameRecorder.enabled = false;
Diese Aktion stoppt die Aufzeichnung sofort und blockiert, bis die Datei geschrieben wurde.
Wichtig
Die Aufzeichnung muss durch Stoppen beendet werden, sonst ist die Datei unvollstandig und Teile der Funktion oder sogar die ganze Datei sind nicht nutzbar:
Dateispeicherung und Export
Mit dem Ereignis OnRecording konnen Sie den vollstandigen echten Pfad der Aufnahme-Datei abrufen:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
In der Standardkonfiguration werden die Aufnahmedateien im persistenten Datenpfad der App gespeichert. Auf diesen Pfad kann uber Application.persistentDataPath zugegriffen werden.
Der Speicherpfad der Aufnahmedatei kann uber FrameRecorder.Configuration.FilePath geandert werden. Dieser Pfad muss vor dem Start der Aufzeichnung gesetzt werden, und AutoFilePath muss deaktiviert werden, damit die Einstellung wirksam wird. Das Verzeichnis muss vorher erstellt werden.
Wichtig
Stellen Sie sicher, dass das Speicherverzeichnis der Aufnahmedatei existiert und beschreibbar ist, sonst schlagt der Start der Aufzeichnung fehl.
Das folgende Beispiel zeigt, wie die Aufnahmedatei in einem benutzerdefinierten Verzeichnis gespeichert und der Dateiname anhand des vom Session verwendeten FrameSource-Typs und der aktuellen Zeit erzeugt wird:
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;
Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster nach dem Deaktivieren von Auto File Path in Frame Recorder die Einstellungen vornehmen:

Tipp
Uber FrameRecorder.RecordingConfiguration.FilePath konnen Speicherverzeichnis und Dateiname (ohne Erweiterung) geandert werden. Die Dateiendung wird entsprechend dem Aufnahmeformat automatisch hinzugefugt.
Wenn die Datei im persistenten Datenpfad der App oder in einem anderen privaten Pfad gespeichert ist, kann sie auf folgende Weise auf den Computer exportiert werden:
- Auf Android kann sie nach dem Verbinden per USB mit dem Computer uber
adb pulloder andere Methoden exportiert werden. Die Datei befindet sich normalerweise unter/sdcarad/Android/data/<app package name>/files. - Auf iOS kann sie uber das Devices-Fenster von Xcode auf den Computer exportiert werden oder uber die Dateifreigabe von iTunes oder Finder aus dem privaten Verzeichnis der App abgerufen werden.
- Die Datei kann per Code in ein offentliches Verzeichnis gespeichert werden, etwa in den Download-Ordner von Android oder in die Fotos-App von iOS.
Anmerkung
Wenn eine iOS-App uber die Dateifreigabe in iTunes oder Finder auf ihr privates Verzeichnis zugreifen konnen soll, muss vor dem Packen im Info.plist des Xcode-Projekts der Schlussel UIFileSharingEnabled hinzugefugt und auf YES gesetzt werden:

Dass der nach dem Hinzufugen angezeigte Text sich vom hinzugefugten String unterscheidet, ist normal.
Aufnahmeformat andern
Andern Sie das Aufnahmeformat uber FrameRecorder.Configuration.Format; dies muss vor dem Start der Aufzeichnung gesetzt werden.
Zum Beispiel zeigt das folgende Codebeispiel, wie das Aufnahmeformat zwingend auf H264 gesetzt wird:
frameRecorder.Configuration.Format = FrameRecorder.InternalFormat.H264;
Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster Format andern:

Anmerkung
H264 kann auf einigen Geraten (zum Beispiel Windows) nicht verwendet werden. Im Allgemeinen wird Auto empfohlen, damit das passende Format automatisch anhand des Gerats gewahlt wird.
Anmerkung
Auf XREAL konnen mit Obsolete aufgezeichnete Daten nicht fur die Simulation verwendet werden; dieses Format dient nur zur Fehleranalyse.
Mit RecordingFormat konnen Sie das aktuelle Aufnahmeformat ansehen.
Automatisch bei Session-Start aufzeichnen
Wenn Sie vor dem Start der Session AutoStart auf true setzen, beginnt die Aufzeichnung beim Start der Session automatisch, zum Beispiel:
frameRecorder.AutoStart = true;
Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster Auto Start der Komponente Frame Recorder aktivieren:

Anmerkung
Das direkte Andern von FrameRecorder.enabled im Editor ist wirkungslos.
Fur Mega verfugbare Daten
Bei der Verwendung von Mega gelten fur EIF und verwandte Dateien einige besondere Anforderungen. Fruhere Versionen des Unity-Plugins hatten diese Funktionen nicht integriert, und die dort aufgezeichneten Daten konnen nicht fur Mega verwendet werden.
Die folgenden Arten von Daten konnen fur Mega verwendet werden:
- Mit Unity-Plugin Version 4000 oder hoher aufgezeichnete Daten
- Mit Mega Toolbox aufgezeichnete Daten
- Wenn die Daten im Format Obsolete aufgezeichnet wurden, zum Beispiel die Datei
x.eif, muss im selben Verzeichnis auch die Dateix.eif.jsonvorhanden sein
Die folgenden Arten von Daten konnen nicht fur Mega verwendet werden:
- Mit Unity-Plugin 4.6 oder niedriger aufgezeichnete Daten
- Mit nativem EasyAR Sense aufgezeichnete Daten, wenn nicht dieselben Inhalte wie im Unity-Plugin hinzugefugt wurden
Außerdem kann Mega zwar auch ohne Motion Tracking arbeiten, aber die Laufwirkung ist dann anders. Es wird empfohlen, beim Aufzeichnen von EIF-Dateien Motion Tracking zu aktivieren, damit die Wiedergabe in den meisten Anwendungsszenarien passt.
Nachste Schritte
- Versuchen Sie mit EIF-Dateien zu simulieren
- Versuchen Sie das Session-Validierungstool