[BUG] Can't view video datasets with `metadata` in App
When trying to load a video dataset with `fiftyone.core.labels.VideoMetadata` values in its `metadata` field, I get the following error:

```
Traceback (most recent call last):
  File "main.py", line 108, in wrapper
    return func(self, *args, **kwargs)
  File "main.py", line 316, in on_get_frame_labels
    field_labels = _make_image_labels(k, v, frame_number)
  File "main.py", line 156, in _make_image_labels
    fol.ImageLabel.from_dict(label).to_image_labels(name=name),
AttributeError: 'VideoMetadata' object has no attribute 'to_image_labels'
```

After setting the `metadata` to `None`, I can then visualize the dataset.
diff --git a/fiftyone/server/main.py b/fiftyone/server/main.py
index 747f574a7..1f77b987d 100644
--- a/fiftyone/server/main.py
+++ b/fiftyone/server/main.py
@@ -375,17 +375,27 @@ class StateController(Namespace):
 
             labels.add_frame(frame_labels)
 
+        sample_schema = state.dataset.get_field_schema()
         for frame_number in range(
             1, etav.get_frame_count(sample["filepath"]) + 1
         ):
             frame_labels = etav.VideoFrameLabels(frame_number=frame_number)
             for k, v in sample.items():
-                if isinstance(v, dict) and k != "frames" and "_cls" in v:
-                    field_labels = _make_frame_labels(k, v, frame_number)
-                    for obj in field_labels.objects:
-                        obj.frame_number = frame_number
+                if k not in sample_schema:
+                    continue
 
-                    frame_labels.merge_labels(field_labels)
+                field = sample_schema[k]
+                if not isinstance(field, fof.EmbeddedDocumentField):
+                    continue
+
+                if not issubclass(field.document_type, fol.Label):
+                    continue
+
+                field_labels = _make_frame_labels(k, v, frame_number)
+                for obj in field_labels.objects:
+                    obj.frame_number = frame_number
+
+                frame_labels.merge_labels(field_labels)
 
             labels.add_frame(frame_labels, overwrite=False)
 
['fiftyone/server/main.py']