code: def test_video_concatenated_frames(self):
      video_shape = (None, 400, 640, 3)
      lsun_examples_path = os.path.join(
          self._test_data_path, "lsun_examples"
      )
      frames_paths = [
          os.path.join(lsun_examples_path, "{}.jpg".format(i))
          for i in (1, 2, 3, 4)
      ]
      frames = []
      for frame_path in frames_paths:
          with tf.io.gfile.GFile(frame_path, "rb") as frame_fp:
              frames.append(
                  tf.image.decode_jpeg(frame_fp.read(), channels=3)
              )
      video = tf.stack(frames)
  
      # Check both str and Path objects
      frames_paths[-1] = pathlib.Path(frames_paths[-1])
  
      self.assertFeature(
          feature=features.Video(shape=video_shape),
          shape=video_shape,
          dtype=tf.uint8,
          tests=[
              # Numpy array
              testing.FeatureExpectationItem(
                  value=frames_paths,
                  expected=video,
              ),
          ],
      )
  
file_path: datasets/tensorflow_datasets/core/features/video_feature_test.py
imports: import json
  import os
  import pathlib
  from etils import epath
  import numpy
  import tensorflow
  from tensorflow_datasets import testing
  from tensorflow_datasets.core import features
label_desc: Use image node_id 3 for calling the VideoFeatureTest obj's underlying member method code with example usage: obj.test_video_concatenated_frames() without return types