Craig SmithCraig Smith
CAVE: Collaborative Audio / Video Editor
January – April 2023
Faran Meshinchi, Kyle Wagner, Marco Suriano, Rachel Townson, Wenrui Li
React, JavaScript, FFmpeg, Node.js, Express, WebSocket, Microsoft Azure

CAVE is a real-time collaborative video editor that makes working on video projects just as easy as editing a Google Doc. It allows an unlimited number of editors to work simultaneously from anywhere in the world from a web browser; no downloads required.

CAVE is my team’s project for Michigan State University’s Computer Science Capstone, developed for our sponsor company TechSmith. My team is the recipient of the Amazon Sigma Award for best project overall.

Amazon Sigma Award

Users can upload video, image, and audio files and arrange them with an intuitive timeline UI. They can preview the edited video at any time, and when completed, the final video can be downloaded for distribution across various platforms. All video projects and their associated media are stored securely in the cloud where users can invite others to collaborate. After collaborators log in securely they can begin working on their projects independently or together in real-time.

CAVE is built on JavaScript and React. FFmpeg runs on the client side via WebAssembly to process media and render previews and the final exported video. Edits from simultaneous users are kept in sync with bidirectional WebSocket communication. The back end is built using Node.js and is hosted on Microsoft Azure.

CAVE System Architecture

The timeline state is serialized to XML for storage in the database and transmission between the server and clients to enable real-time synchronization. Project edits are managed with a custom versioning system and conflicting edits are handled on a first-come basis. This timeline XML is then rendered to UI state to display a representative timeline and is parsed into commands for FFmpeg to render the resulting video.

My role in the project included media processing, project serialization, and real-time synchronization in addition to front end and UI work. Wenrui worked with me on media processing in addition to front end work. Marco worked on the front end and developed the bulk of the UI. Kyle developed the Timeline UI in addition to other front-end work. Rachel and Faran worked on the back end, with Rachel focusing on SQL database interfacing and Faran focusing on Blob storage integration for media storage in addition to OAuth for user login and API security.

As part of the project, my team filmed a cheesy informative video to showcase the software and its use cases. Kyle (a film history connoisseur) did an excellent job leading the filming and editing.