MCAP (pronounced "em-cap") is an open source container file format for multimodal log data. It supports multiple channels of timestamped pre-serialized data, and is ideal for use in pub/sub or robotics applications.
MCAP is ideal for storing multiple channels of timestamped log data, such as pub/sub messages or multimodal sensor data.
MCAP is a container format, allowing you to record and replay binary messages in any format, such as Protobuf, DDS (CDR), ROS, JSON, etc.
MCAP utilizes a row-oriented, append-only design. This minimizes disk I/O, and reduces the risk of data corruption during an unclean shutdown.
MCAP files are fully self-contained, including schemas required to deserialize each channel. Older files always remain readable, even as your codebase evolves.
MCAP files contain an optional index, allowing for fast, efficient reading, even over a low-bandwidth internet connection.
Data can be compressed using lz4 or zstd, while still supporting efficient indexed reads using chunk-based decompression.
MCAP reader and writer libraries are available in many languages, including C++, Go, Python, Rust, Swift, and Typescript.
Features such as chunking, indexing, CRC checksums, and compression are optional. You choose the right tradeoffs for your application.
MCAP is used in production by a wide range of companies, from autonomous vehicles to drones, and is the default log format in ROS 2.