Mit der Recording &Wiedergabe API können Sie eine Sitzung aufzeichnen und anstelle eines Echtzeit-Kamerafeeds verwenden. Diese Aufnahmen enthalten jedoch nur Video- und Sensordaten. Sie können einer Sitzungsaufzeichnung auch benutzerdefinierte Daten hinzufügen, die während der Wiedergabe so zurückgegeben werden, als wären sie Teil eines Kamerabilds.
ARCore fügt Aufnahmen keine benutzerdefinierten Daten automatisch hinzu. Stattdessen können Sie einem ARCore-Frame während der Aufnahme benutzerdefinierte Daten hinzufügen und dieseselben Daten während der Wiedergabe aus dem Frame abrufen. Es liegt an Ihnen, die App so zu programmieren, dass der Nutzer die erwarteten Daten erhält, wenn er die Sitzung wiedergibt.
Anwendungsfälle für benutzerdefinierte Daten
Wenn Sie Aufnahmen benutzerdefinierte Daten hinzufügen, erweitern Sie die Möglichkeiten für Ihre AR-Apps. Im Folgenden sind einige spezifische Anwendungsfälle aufgeführt.
AR unterwegs verwenden
Bisher konnten Nutzer nur am richtigen Ort und zur richtigen Zeit auf AR-Inhalte zugreifen. Wenn sie eine AR-Lampe im Wohnzimmer platzieren wollten, mussten sie sich vor Ort aufhalten, um zu sehen, wie die Lampe dort aussehen könnte. Mit benutzerdefinierten Tracks können sie ihr Wohnzimmer einmal aufnehmen und der Szene jederzeit virtuelle Möbel hinzufügen.
AR-Inhalte gemeinsam erstellen
Da keine Live-Sitzung mehr erforderlich ist, haben Nutzer viele weitere Möglichkeiten zur AR-Bearbeitung. So können sie jederzeit und überall einzigartige AR-Inhalte erstellen und darauf zugreifen. So können sie beispielsweise eine bestimmte Umgebung aufnehmen, Augmented-Reality-Effekte hinzufügen und die Aufnahmen mit Freunden teilen.
Voraussetzungen
Machen Sie sich mit den grundlegenden AR-Konzepten und der Konfiguration einer ARCore-Sitzung vertraut, bevor Sie fortfahren.
Aufzeichnung mit benutzerdefinierten Daten initialisieren
So initialisieren Sie eine Aufnahme mit benutzerdefinierten Daten: Informationen zum Starten, Beenden und Prüfen einer Aufzeichnungssitzung finden Sie unter AR-Sitzungen aufzeichnen und wiedergeben.
- Sie benötigen einen
ARCoreRecordingConfig
. - Erstellen Sie eine neue
Track
mit einer benutzerdefinierten UUID. Alle benutzerdefinierten Daten werden hier gespeichert. - Fügen Sie
Track
zuARCoreRecordingConfig
hinzu, die Sie während der Sitzungskonfiguration erstellt haben.
// Initialize a new track with a custom UUID.
// Make sure to save the UUID because it is the ID that you will use
// to get your data back during playback.
var track = new Track {
Id = Guid.Parse("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
};
// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
List<Track> tracks = new List<Track>();
tracks.Add(track);
recordingConfig.Tracks = tracks;
Alle neuen Titel werden als separate Aufnahmen behandelt. Jeder aufgezeichnete Titel hat eine eigene UUID.
Track mit zusätzlichen Daten konfigurieren
Konfigurieren Sie den Track mit zusätzlichen Daten, die die Sitzungsaufzeichnung beschreiben. Du kannst einen Titel beispielsweise mit einer Notiz taggen, in der du den Ort und die Uhrzeit angibst, zu der du die Sitzung aufgezeichnet hast: „Diese Sitzung wurde am Nachmittag im Einkaufszentrum aufgezeichnet.“
// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;
Track mit einem MIME-Typ konfigurieren
Konfigurieren Sie einen Track mit einem MIME-Typ, der den Datentyp beschreibt, der im Track aufgezeichnet wird, um die Kompatibilität mit externen Tools zu gewährleisten.
Wenn Sie keinen Typ angeben, werden die Daten als application/text
kategorisiert. ARCore ignoriert den MIME-Typ beim Lesen von Daten.
// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";
Benutzerdefinierte Daten-Tracks aufzeichnen
Alle benutzerdefinierten Track-Daten werden auf Frames aufgezeichnet. Die Zeit, zu der Sie Daten in einen Frame aufnehmen, ist dieselbe Zeit, zu der die Daten während der Wiedergabe zurückgegeben werden. Wenn du beispielsweise RecordTrackData()
mit dem Wert „A“ bei 00:07:02
aufrufst, wird bei der Wiedergabe des Titels an der Markierung 00:07:02
„A“ zurückgegeben.
Wenn Sie einen benutzerdefinierten Daten-Track aufzeichnen möchten, drücken Sie die Taste RecordTrackData()
.
// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
// Convert the lamp data into a byte array.
var lampData = new byte[] { (byte) Lamp.FLOOR }; // a floor lamp
recordingManager.RecordTrackData(trackGuid, lampData);
}
Benutzerdefinierte Datentracks abspielen
Benutzerdefinierte Daten während der Wiedergabe aus einer Sitzungsaufzeichnung extrahieren.
Wiedergabe initialisieren
Die Initialisierung einer Wiedergabe mit benutzerdefinierten Daten entspricht der Initialisierung einer Wiedergabe einer regulären Sitzungsaufzeichnung.
Benutzerdefinierte Daten zurückgeben
Rufen Sie GetUpdatedTrackData()
auf, um die benutzerdefinierten Daten abzurufen, die in einem Frame aufgezeichnet wurden. Es ist möglich, mehrere Datensätze aus demselben Frame abzurufen. Wenn du beispielsweise während der Aufnahme RecordTrackData()
zweimal für denselben Frame aufgerufen hast, erhältst du bei der Wiedergabe zwei Instanzen von TrackData
zurück.
// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);
Sobald sich die TrackData
in einem Containerobjekt befindet, extrahiere die Bytes der benutzerdefinierten Daten.
// Extract the bytes of custom data from the list of track data.
foreach (TrackData trackData in trackDataList) {
var data = trackData.Data;
Lamp lamp = Lamp.fromByte(data[0]); // This is the lamp!
}
Weiteres Vorgehen
- Im Codelab zu Aufzeichnung und Wiedergabe erfahren Sie, wie Sie Ihre eigene App mit Aufzeichnung und Wiedergabe erstellen.