Repository: catalystneuro/neuroconv

Issue:
[Bug]: Converter won't work with multiple VideoInterfaces
### What happened?

I want to store multiple behavioral videos, but these are not sequential, they are independent recordings form different directions (top, side).
As of now, it seems to break due to VideoInterface using always the same key in the general schema.

### Steps to Reproduce

```python
from neuroconv import NWBConverter
from datetime import datetime
from zoneinfo import ZoneInfo
from neuroconv.datainterfaces import VideoInterface


class MultiVideoConverter(NWBConverter):
    data_interface_classes = dict(
        BehavioralVideoTop=VideoInterface,
        BehavioralVideoSide=VideoInterface,
    )

source_data = dict(
    BehavioralVideoTop=dict(file_paths=["path_to/file.mp4"]),
    BehavioralVideoSide=dict(file_paths=["path_to/file.mp4"]),
)

converter = MultiVideoConverter(source_data)

source_metadata = converter.get_metadata()
session_start_time = datetime(2020, 1, 1, 12, 30, 0, tzinfo=ZoneInfo("US/Pacific"))
metadata["NWBFile"].update(session_start_time=session_start_time)

print(metadata["Behavior"])
print(converter.get_metadata_schema()["properties"]["Behavior"]["properties"].keys())

converter.run_conversion(
    metadata=metadata,
    nwbfile_path="converted_multi_videos_session.nwb",
    overwrite=True
)
```


### Traceback

```python
AssertionError                            Traceback (most recent call last)
Cell In[25], line 31
     28 print(metadata["Behavior"])
     29 print(converter.get_metadata_schema()["properties"]["Behavior"]["properties"].keys())
---> 31 converter.run_conversion(
     32     metadata=metadata,
     33     nwbfile_path="converted_multi_videos_session.nwb",
     34     overwrite=True
     35 )

File /mnt/shared_storage/Github/neuroconv/src/neuroconv/nwbconverter.py:186, in NWBConverter.run_conversion(self, nwbfile_path, nwbfile, metadata, overwrite, backend, backend_configuration, conversion_options)
    176 with make_or_load_nwbfile(
    177     nwbfile_path=nwbfile_path,
    178     nwbfile=nwbfile,
   (...)
    182     verbose=getattr(self, "verbose", False),
    183 ) as nwbfile_out:
    184     if backend_configuration is None:
    185         # Otherwise assume the data has already been added to the NWBFile
--> 186         self.add_to_nwbfile(nwbfile_out, metadata=metadata, conversion_options=conversion_options)
    188         backend_configuration = self.get_default_backend_configuration(nwbfile=nwbfile_out, backend=backend)
    190     configure_backend(nwbfile=nwbfile_out, backend_configuration=backend_configuration)

File /mnt/shared_storage/Github/neuroconv/src/neuroconv/nwbconverter.py:126, in NWBConverter.add_to_nwbfile(self, nwbfile, metadata, conversion_options)
    124 conversion_options = conversion_options or dict()
    125 for interface_name, data_interface in self.data_interface_objects.items():
--> 126     data_interface.add_to_nwbfile(
    127         nwbfile=nwbfile, metadata=metadata, **conversion_options.get(interface_name, dict())
    128     )

File /mnt/shared_storage/Github/neuroconv/src/neuroconv/datainterfaces/behavior/video/videodatainterface.py:312, in VideoInterface.add_to_nwbfile(self, nwbfile, metadata, stub_test, external_mode, starting_frames, chunk_data, module_name, module_description, compression, compression_options)
    309 if videos_metadata is None:
    310     videos_metadata = deepcopy(self.get_metadata()["Behavior"]["Videos"])
--> 312 assert len(videos_metadata) == self._number_of_files, (
    313     "Incomplete metadata "
    314     f"(number of metadata in video {len(videos_metadata)})"
    315     f"is not equal to the number of file_paths {self._number_of_files}"
    316 )
    318 videos_name_list = [video["name"] for video in videos_metadata]
    319 any_duplicated_video_names = len(set(videos_name_list)) < len(videos_name_list)

AssertionError: Incomplete metadata (number of metadata in video 2)is not equal to the number of file_paths 1
```


### Operating System

Linux

### Python Executable

Conda

### Python Version

3.10

### Package Versions

_No response_

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/catalystneuro/neuroconv/blob/main/.github/CODE_OF_CONDUCT.rst)
- [X] Have you ensured this bug was not already [reported](https://github.com/catalystneuro/neuroconv/issues)?

Discussion:
luiztauffer: a couple of tests are failing due to an import error:
```
No module named 'tenacity.asyncio'
```

any idea what could be causing this @CodyCBakerPhD @h-mayorquin ?
CodyCBakerPhD: Looks like a known issue with tenacity as of 2-6 hours ago: https://github.com/langchain-ai/langchain/issues/22972
CodyCBakerPhD: fix LGTM; can you add some tests then this is good to go?
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`25e2254`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/25e225486888acbbad842339f5a7f086f9e96a32?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

> :exclamation: **Current head 25e2254 differs from pull request most recent head 179848c**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit 179848c to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`25e2254`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/25e225486888acbbad842339f5a7f086f9e96a32?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

> :exclamation: **Current head 25e2254 differs from pull request most recent head fc5d2f0**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit fc5d2f0 to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`fc5d2f0`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/fc5d2f01836c82c3785bc6ddf121f0b940e9abec?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
CodyCBakerPhD: Tests look good @luiztauffer

Thanks

One last note from Heberto to resolve then good to go
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`fc5d2f0`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/fc5d2f01836c82c3785bc6ddf121f0b940e9abec?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

> :exclamation: **Current head fc5d2f0 differs from pull request most recent head b6d14b1**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit b6d14b1 to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`fc5d2f0`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/fc5d2f01836c82c3785bc6ddf121f0b940e9abec?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

> :exclamation: **Current head fc5d2f0 differs from pull request most recent head 8cea851**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit 8cea851 to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
luiztauffer: @h-mayorquin I'm not sure how much more explanation would be needed there, do you think this is good enough now?
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`8cea851`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/8cea8513f4fdb057ae4ce19312232b538a5b7f76?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`e2161f2`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2161f20478272250f4ef9f465944e65322f6a1d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`8cea851`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/8cea8513f4fdb057ae4ce19312232b538a5b7f76?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

> :exclamation: **Current head 8cea851 differs from pull request most recent head 16b035d**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit 16b035d to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
luiztauffer: that was a typo, thanks @weiglszonja !
@h-mayorquin how about now? Otherwise, yeah, I'd be happy to review a PR on that. That argument basically changes the key name for the metadata entry for that specific data interface within the converter context
h-mayorquin: > that was a typo, thanks @weiglszonja ! @h-mayorquin how about now? Otherwise, yeah, I'd be happy to review a PR on that. That argument basically changes the key name for the metadata entry for that specific data interface within the converter context

OK, check https://github.com/catalystneuro/neuroconv/pull/928 to see if I get your intent right.
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`48eca65`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/48eca658be79413dea88e14248f86f9ce4b059dd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`16b035d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/16b035df1de9232b1fa431c6796bb071eeabc8b8?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

> :exclamation: **Current head 16b035d differs from pull request most recent head 8bca302**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit 8bca302 to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.88%. Comparing base [(`48eca65`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/48eca658be79413dea88e14248f86f9ce4b059dd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`16b035d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/16b035df1de9232b1fa431c6796bb071eeabc8b8?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

> :exclamation: **Current head 16b035d differs from pull request most recent head 944edd3**
> 
> Please [upload](https://docs.codecov.com/docs/codecov-uploader) reports for the commit 944edd3 to get more accurate results.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.88%           
=======================================
  Files         125      125           
  Lines        7088     7090    +2     
=======================================
+ Hits         6442     6444    +2     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.88% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.89%. Comparing base [(`48eca65`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/48eca658be79413dea88e14248f86f9ce4b059dd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`944edd3`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/944edd3a8bbc56db1e86ebc9bd0a9ad9a6a207d7?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@           Coverage Diff           @@
##             main     #914   +/-   ##
=======================================
  Coverage   90.88%   90.89%           
=======================================
  Files         125      125           
  Lines        7088     7095    +7     
=======================================
+ Hits         6442     6449    +7     
  Misses        646      646           
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.89% <85.71%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...atainterfaces/behavior/video/videodatainterface.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/914?src=pr&el=tree&filepath=src%2Fneuroconv%2Fdatainterfaces%2Fbehavior%2Fvideo%2Fvideodatainterface.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi9kYXRhaW50ZXJmYWNlcy9iZWhhdmlvci92aWRlby92aWRlb2RhdGFpbnRlcmZhY2UucHk=) | `93.54% <85.71%> (+0.08%)` | :arrow_up: |

</details>

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18de2d30..a5a76c31 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,7 +16,7 @@
 
 ### Improvements
 * Propagated `photon_series_type` to `BaseImagingExtractorInterface` init instead of passing it as an argument of `get_metadata()` and `get_metadata_schema()`. [PR #847](https://github.com/catalystneuro/neuroconv/pull/847)
-
+* Converter working with multiple VideoInterface instances [PR 914](https://github.com/catalystneuro/neuroconv/pull/914)
 
 
 ## v0.4.10 (June 6, 2024)
diff --git a/src/neuroconv/datainterfaces/behavior/video/videodatainterface.py b/src/neuroconv/datainterfaces/behavior/video/videodatainterface.py
index b30db6a5..65062b2d 100644
--- a/src/neuroconv/datainterfaces/behavior/video/videodatainterface.py
+++ b/src/neuroconv/datainterfaces/behavior/video/videodatainterface.py
@@ -28,7 +28,13 @@ class VideoInterface(BaseDataInterface):
     # Other suffixes, while they can be opened by OpenCV, are not supported by DANDI so should probably not list here
     info = "Interface for handling standard video file formats."
 
-    def __init__(self, file_paths: list, verbose: bool = False):  # TODO - debug why List[FilePathType] fails
+    def __init__(
+        self,
+        file_paths: list,
+        verbose: bool = False,
+        *,
+        metadata_key_name: str = "Videos",
+    ):
         """
         Create the interface for writing videos as ImageSeries.
 
@@ -37,12 +43,37 @@ class VideoInterface(BaseDataInterface):
         file_paths : list of FilePathTypes
             Many video storage formats segment a sequence of videos over the course of the experiment.
             Pass the file paths for this videos as a list in sorted, consecutive order.
+        metadata_key_name : str, optional
+            The key used to identify this video data within the overall experiment metadata.
+            Defaults to "Videos".
+
+            This key is essential when multiple video streams are present in a single experiment.
+            The associated metadata should be a list of dictionaries, with each dictionary
+            containing metadata for a specific video segment:
+
+            ```
+            metadata["Behavior"][metadata_key_name] = [
+                {video1_metadata},
+                {video2_metadata},
+                ...
+            ]
+            ```
+
+            If other video interfaces exist, they would follow a similar structure:
+
+            ```
+            metadata["Behavior"]["other_video_key_name"] = [
+                {other_video1_metadata},
+                {other_video2_metadata},
+                ...
+            ]
         """
         get_package(package_name="cv2", installation_instructions="pip install opencv-python-headless")
         self.verbose = verbose
         self._number_of_files = len(file_paths)
         self._timestamps = None
         self._segment_starting_times = None
+        self.metadata_key_name = metadata_key_name
         super().__init__(file_paths=file_paths)
 
     def get_metadata_schema(self):
@@ -53,26 +84,22 @@ class VideoInterface(BaseDataInterface):
         for key in exclude:
             image_series_metadata_schema["properties"].pop(key)
         metadata_schema["properties"]["Behavior"] = get_base_schema(tag="Behavior")
-        metadata_schema["properties"]["Behavior"].update(
-            required=["Videos"],
-            properties=dict(
-                Videos=dict(
-                    type="array",
-                    minItems=1,
-                    items=image_series_metadata_schema,
-                )
-            ),
+        metadata_schema["properties"]["Behavior"]["required"].append(self.metadata_key_name)
+        metadata_schema["properties"]["Behavior"]["properties"][self.metadata_key_name] = dict(
+            type="array",
+            minItems=1,
+            items=image_series_metadata_schema,
         )
         return metadata_schema
 
     def get_metadata(self):
         metadata = super().get_metadata()
-        behavior_metadata = dict(
-            Videos=[
+        behavior_metadata = {
+            self.metadata_key_name: [
                 dict(name=f"Video: {Path(file_path).stem}", description="Video recorded by camera.", unit="Frames")
                 for file_path in self.source_data["file_paths"]
             ]
-        )
+        }
         metadata["Behavior"] = behavior_metadata
 
         return metadata
@@ -307,9 +334,9 @@ class VideoInterface(BaseDataInterface):
         file_paths = self.source_data["file_paths"]
 
         # Be sure to copy metadata at this step to avoid mutating in-place
-        videos_metadata = deepcopy(metadata).get("Behavior", dict()).get("Videos", None)
+        videos_metadata = deepcopy(metadata).get("Behavior", dict()).get(self.metadata_key_name, None)
         if videos_metadata is None:
-            videos_metadata = deepcopy(self.get_metadata()["Behavior"]["Videos"])
+            videos_metadata = deepcopy(self.get_metadata()["Behavior"][self.metadata_key_name])
 
         assert len(videos_metadata) == self._number_of_files, (
             "Incomplete metadata "


Test patch:
diff --git a/tests/test_behavior/test_video_interface.py b/tests/test_behavior/test_video_interface.py
index e4f4c6df..b1ce7f1f 100644
--- a/tests/test_behavior/test_video_interface.py
+++ b/tests/test_behavior/test_video_interface.py
@@ -38,6 +38,7 @@ class TestVideoInterface(TestCase):
     def create_videos(self):
         video_file1 = str(self.test_dir / "test1.avi")
         video_file2 = str(self.test_dir / "test2.avi")
+        video_file3 = str(self.test_dir / "test3.avi")
         number_of_frames = 30
         number_of_rows = 640
         number_of_columns = 480
@@ -60,28 +61,51 @@ class TestVideoInterface(TestCase):
             fps=fps,
             frameSize=frameSize,
         )
+        writer3 = cv2.VideoWriter(
+            filename=video_file3,
+            fourcc=fourcc,
+            fps=fps,
+            frameSize=frameSize,
+        )
 
         for frame in range(number_of_frames):
             writer1.write(np.random.randint(0, 255, (number_of_rows, number_of_columns, 3)).astype("uint8"))
             writer2.write(np.random.randint(0, 255, (number_of_rows, number_of_columns, 3)).astype("uint8"))
+            writer3.write(np.random.randint(0, 255, (number_of_rows, number_of_columns, 3)).astype("uint8"))
 
         writer1.release()
         writer2.release()
+        writer3.release()
 
-        return [video_file1, video_file2]
+        return [video_file1, video_file2, video_file3]
 
     def create_video_converter(self):
         class VideoTestNWBConverter(NWBConverter):
-            data_interface_classes = dict(Video=VideoInterface)
+            data_interface_classes = dict(
+                Video1=VideoInterface,
+                Video2=VideoInterface,
+            )
 
-        source_data = dict(Video=dict(file_paths=self.video_files))
+        source_data = dict(
+            Video1=dict(
+                file_paths=self.video_files[0:2],
+                metadata_key_name="Video1",
+            ),
+            Video2=dict(
+                file_paths=[self.video_files[2]],
+                metadata_key_name="Video2",
+            ),
+        )
         return VideoTestNWBConverter(source_data=source_data)
 
 
 @unittest.skipIf(skip_test, "cv2 not installed")
 class TestExternalVideoInterface(TestVideoInterface):
     def test_video_external_mode_multiple_file_paths_error(self):
-        conversion_opts = dict(Video=dict(external_mode=True, starting_frames=[0, 4]))
+        conversion_opts = dict(
+            Video1=dict(external_mode=True, starting_frames=[0, 4]),
+            Video2=dict(external_mode=True),
+        )
         with self.assertRaisesWith(
             exc_type=ValueError,
             exc_msg=(
@@ -98,11 +122,11 @@ class TestExternalVideoInterface(TestVideoInterface):
 
     def test_video_external_mode(self):
         timestamps = [np.array([2.2, 2.4, 2.6]), np.array([3.2, 3.4, 3.6])]
-        interface = self.nwb_converter.data_interface_objects["Video"]
+        interface = self.nwb_converter.data_interface_objects["Video1"]
         interface.set_aligned_timestamps(aligned_timestamps=timestamps)
         interface.set_aligned_segment_starting_times(aligned_segment_starting_times=self.aligned_segment_starting_times)
 
-        conversion_options = dict(Video=dict(external_mode=True, starting_frames=[0, 4]))
+        conversion_options = dict(Video1=dict(external_mode=True, starting_frames=[0, 4]))
         self.nwb_converter.run_conversion(
             nwbfile_path=self.nwbfile_path,
             overwrite=True,
@@ -113,15 +137,16 @@ class TestExternalVideoInterface(TestVideoInterface):
             nwbfile = io.read()
             module = nwbfile.acquisition
             metadata = self.nwb_converter.get_metadata()
-            self.assertListEqual(list1=list(module["Video: test1"].external_file[:]), list2=self.video_files)
+            self.assertListEqual(list1=list(module["Video: test1"].external_file[:]), list2=self.video_files[0:2])
+            self.assertListEqual(list1=list(module["Video: test3"].external_file[:]), list2=[self.video_files[2]])
 
     def test_video_irregular_timestamps(self):
         aligned_timestamps = [np.array([1.0, 2.0, 4.0]), np.array([5.0, 6.0, 7.0])]
-        interface = self.nwb_converter.data_interface_objects["Video"]
+        interface = self.nwb_converter.data_interface_objects["Video1"]
         interface.set_aligned_timestamps(aligned_timestamps=aligned_timestamps)
         interface.set_aligned_segment_starting_times(aligned_segment_starting_times=self.aligned_segment_starting_times)
 
-        conversion_options = dict(Video=dict(external_mode=True, starting_frames=[0, 4]))
+        conversion_options = dict(Video1=dict(external_mode=True, starting_frames=[0, 4]))
         self.nwb_converter.run_conversion(
             nwbfile_path=self.nwbfile_path,
             overwrite=True,
@@ -136,10 +161,10 @@ class TestExternalVideoInterface(TestVideoInterface):
 
     def test_starting_frames_type_error(self):
         timestamps = [np.array([2.2, 2.4, 2.6]), np.array([3.2, 3.4, 3.6])]
-        interface = self.nwb_converter.data_interface_objects["Video"]
+        interface = self.nwb_converter.data_interface_objects["Video1"]
         interface.set_aligned_timestamps(aligned_timestamps=timestamps)
 
-        conversion_opts = dict(Video=dict(external_mode=True))
+        conversion_opts = dict(Video1=dict(external_mode=True))
         metadata = self.metadata
 
         with self.assertRaisesWith(
@@ -155,10 +180,10 @@ class TestExternalVideoInterface(TestVideoInterface):
 
     def test_starting_frames_value_error(self):
         timestamps = [np.array([2.2, 2.4, 2.6]), np.array([3.2, 3.4, 3.6])]
-        interface = self.nwb_converter.data_interface_objects["Video"]
+        interface = self.nwb_converter.data_interface_objects["Video1"]
         interface.set_aligned_timestamps(aligned_timestamps=timestamps)
 
-        conversion_opts = dict(Video=dict(external_mode=True, starting_frames=[0]))
+        conversion_opts = dict(Video1=dict(external_mode=True, starting_frames=[0]))
         metadata = self.metadata
 
         with self.assertRaisesWith(
@@ -177,20 +202,37 @@ class TestExternalVideoInterface(TestVideoInterface):
 class TestInternalVideoInterface(TestVideoInterface):
     def create_video_converter(self):
         class VideoTestNWBConverter(NWBConverter):
-            data_interface_classes = dict(Video=VideoInterface)
+            data_interface_classes = dict(
+                Video1=VideoInterface,
+                Video2=VideoInterface,
+            )
 
-        source_data = dict(Video=dict(file_paths=[self.video_files[0]]))
+        source_data = dict(
+            Video1=dict(
+                file_paths=[self.video_files[0]],
+                metadata_key_name="Video1",
+            ),
+            Video2=dict(
+                file_paths=[self.video_files[2]],
+                metadata_key_name="Video2",
+            ),
+        )
         return VideoTestNWBConverter(source_data=source_data)
 
     def test_save_video_to_custom_module(self):
         module_name = "TestModule"
         module_description = "This is a test module."
         conversion_opts = dict(
-            Video=dict(
+            Video1=dict(
                 external_mode=False,
                 module_name=module_name,
                 module_description=module_description,
-            )
+            ),
+            Video2=dict(
+                external_mode=False,
+                module_name=module_name,
+                module_description=module_description,
+            ),
         )
         self.nwb_converter.run_conversion(
             nwbfile_path=self.nwbfile_path,
@@ -204,7 +246,10 @@ class TestInternalVideoInterface(TestVideoInterface):
             assert module_description == nwbfile.processing[module_name].description
 
     def test_video_chunking(self):
-        conversion_options = dict(Video=dict(external_mode=False, stub_test=True, chunk_data=False))
+        conversion_options = dict(
+            Video1=dict(external_mode=False, stub_test=True, chunk_data=False),
+            Video2=dict(external_mode=False, stub_test=True, chunk_data=False),
+        )
         self.nwb_converter.run_conversion(
             nwbfile_path=self.nwbfile_path,
             overwrite=True,
@@ -216,19 +261,19 @@ class TestInternalVideoInterface(TestVideoInterface):
             nwbfile = io.read()
             mod = nwbfile.acquisition
             metadata = self.nwb_converter.get_metadata()
-            for video_metadata in metadata["Behavior"]["Videos"]:
+            for video_metadata in metadata["Behavior"]["Video1"]:
                 video_interface_name = video_metadata["name"]
                 assert mod[video_interface_name].data.chunks is not None  # TODO retrieve storage_layout of hdf5 dataset
 
     def test_video_stub(self):
         aligned_timestamps = [np.array([1, 2, 4, 5, 6, 7, 8, 9, 10, 11])]
-        interface = self.nwb_converter.data_interface_objects["Video"]
+        interface = self.nwb_converter.data_interface_objects["Video1"]
         interface.set_aligned_timestamps(aligned_timestamps=aligned_timestamps)
         interface.set_aligned_segment_starting_times(
             aligned_segment_starting_times=[self.aligned_segment_starting_times[0]]
         )
 
-        conversion_options = dict(Video=dict(external_mode=False, stub_test=True))
+        conversion_options = dict(Video1=dict(external_mode=False, stub_test=True))
         self.nwb_converter.run_conversion(
             nwbfile_path=self.nwbfile_path,
             overwrite=True,
@@ -239,7 +284,7 @@ class TestInternalVideoInterface(TestVideoInterface):
             nwbfile = io.read()
             mod = nwbfile.acquisition
             metadata = self.nwb_converter.get_metadata()
-            for video_index in range(len(metadata["Behavior"]["Videos"])):
-                video_interface_name = metadata["Behavior"]["Videos"][video_index]["name"]
+            for video_index in range(len(metadata["Behavior"]["Video1"])):
+                video_interface_name = metadata["Behavior"]["Video1"][video_index]["name"]
                 assert mod[video_interface_name].data.shape[0] == 10
                 assert mod[video_interface_name].timestamps.shape[0] == 10