audio.manual with video loader can't handle large videos

I am attempting to label speaker timestamps in a video. The command I am using is this:
prodigy audio.manual speaker_data ./videos/ --loader video --label SPEAKER_1,SPEAKER_2,SPEAKER_3,SPEAKER_4

When the /videos/ folder contains only a few short videos (shorter than ~10 min) it works fine. If I point the tool towards a folder with a single 20 minute video in it, the UI loads in the browser window (with the left hand column appearing correctly), I see "Loading..." in the center area for a few seconds, then I get the "oh snap something went wrong, error code 5" from my browser (Google chrome).
Opening up developer tools in chrome during this process didn't help ("dev tools was disconnected from the page). Sometimes I instead get the error in the UI "cannot fetch tasks, make sure server is running correctly".

Any advice?

Hi! The problem here is that the built-in audio, video and image loaders will convert the file data to base64 to send it to the web app. So basically, the entire file is encoded as a string. That works fine for smaller files and is convenient, because you can easily work with local files and the source data is stored with the annotation, so you never lose the reference.

However, if your files are large, this is less convenient, sending the data takes much longer (because you're essentially sending the whole file over REST), and you're also likely to exceed browser limits. So in cases like this, you probably don't want to encode your files as base64.

One solution is to use the video-server loader: This will serve your video files via a local web server, so they can be accessed by your browser (because browsers would block local file paths). An alternative solution would be to store your files in a cloud bucket or similar, and load your videos from URLs instead. For example, you can prepare a JSONL file like this and load it with --loader jsonl:

{"video": "https://path/to/your/video.mp4"}