Skip to main content

A tool to convert ROS topics recorded with mcap to MP4 file

Project description

mcap-to-mp4

A tool to convert ROS 2 topics recorded with rosbag2 recordings in mcap format into MP4 files

English
This tool provides a simple way to convert ROS 2 topics stored in rosbag2 recordings using the MCAP format into standard MP4 video files.
It is especially useful for visualizing and sharing regularly published topics such as camera streams or sensor data.
Since the tool assumes that topics are subscribed at a fixed rate, the generated MP4 uses the average frame interval of the input messages.
This makes the resulting video well-suited for experiment reviews, demos, or presentations.

日本語
このツールは、rosbag2MCAP 形式として記録された ROS 2 トピックを、標準的な MP4 動画ファイルに変換します。
カメラストリームやセンサーデータなど、一定周期で発行されるトピックを可視化・共有するのに特に便利です。
トピックが一定周期でサブスクライブできることを前提としており、生成される MP4 は各フレーム間隔の平均値を採用して出力します。
そのため、実験の振り返りやデモ、プレゼンテーションに適しています。

Requirements

Note: This tool does NOT require a ROS 2 runtime environment.
You only need Python and the following dependencies:

  • Python3
    • mcap
    • mcap-ros2-support
    • pillow
    • numpy
    • imageio
  • ffmpeg

QuickStart

pip

# Install
pip install mcap-to-mp4
# Run
mcap-to-mp4 $path_to_the_mcap_file -t $topic_name -o $outputfilename

uv

# Install
uv tool install mcap-to-mp4
# Run
mcap-to-mp4 $path_to_the_mcap_file -t $topic_name -o $outputfilename

Docker

# Build
git clone https://github.com/Tiryoh/mcap-to-mp4.git
docker build -t tiryoh/mcap-to-mp4 .
# Run
docker run --rm -it -v "${PWD}:/works" tiryoh/mcap-to-mp4 $path_to_the_mcap_file -t $topic_name -o $outputfilename

Usage

pip

Install the package from PyPI

pip install mcap-to-mp4

Install the package from source (optional)

# optional
git clone https://github.com/Tiryoh/mcap-to-mp4.git
cd mcap-to-mp4
pip install -e .
mcap-to-mp4 --help

uv

Install the package from PyPI

uv tool install mcap-to-mp4

Install the package from source (optional)

# optional
git clone https://github.com/Tiryoh/mcap-to-mp4.git
cd mcap-to-mp4
uv sync --group dev
# Run with uv run
uv run mcap-to-mp4 --help

Download sample mcap rosbag2 file

wget "https://drive.usercontent.google.com/download?id=1TxKxq-SN_9ryiFxH6kQG07Gy90_bpnWW&confirm=xxx" -O "realsense_rosbag2.zip"
unzip realsense_rosbag2.zip

Run

# With pip or uv tool install:
mcap-to-mp4 ./rosbag2_2024_02_18-23_35_48/rosbag2_2024_02_18-23_35_48_0.mcap -t /camera/color/image_raw -o output.mp4

# With uv sync (source install):
uv run mcap-to-mp4 ./rosbag2_2024_02_18-23_35_48/rosbag2_2024_02_18-23_35_48_0.mcap -t /camera/color/image_raw -o output.mp4

Docker

Install the package

git clone https://github.com/Tiryoh/mcap-to-mp4.git
docker build -t tiryoh/mcap-to-mp4 .

Download sample mcap rosbag2 file

wget "https://drive.usercontent.google.com/download?id=1TxKxq-SN_9ryiFxH6kQG07Gy90_bpnWW&confirm=xxx" -O "realsense_rosbag2.zip"
unzip realsense_rosbag2.zip

Run

docker run --rm -it -v "${PWD}:/works" tiryoh/mcap-to-mp4 ./rosbag2_2024_02_18-23_35_48/rosbag2_2024_02_18-23_35_48_0.mcap -t /camera/color/image_raw -o output.mp4

Notes

  • Memory check: During conversion, the tool estimates memory usage and displays it.
    • Linux (including WSL): Estimated memory usage is displayed. If available system memory is low, a warning is shown and you will be prompted to continue or abort.
    • macOS: Estimated memory usage is displayed. Available memory check is not supported.
    • Windows (non-WSL): Memory check is not supported.

License

Copyright 2024-2026 Daisuke Sato

This repository is licensed under the MIT license, see LICENSE.
Unless attributed otherwise, everything in this repository is under the MIT license.

Related Projects

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcap_to_mp4-0.4.1.tar.gz (74.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcap_to_mp4-0.4.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file mcap_to_mp4-0.4.1.tar.gz.

File metadata

  • Download URL: mcap_to_mp4-0.4.1.tar.gz
  • Upload date:
  • Size: 74.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcap_to_mp4-0.4.1.tar.gz
Algorithm Hash digest
SHA256 399f48c49be1489a0a0bf32ac991ec5340c11d4c5c08db4ab827320b8e6abe0e
MD5 39ea560ba2656176012573a8ece3b4b3
BLAKE2b-256 d59c6909313ae5bfa447b6c1100d73f5fb26a4ddba5258d10b2b7f7517c715c4

See more details on using hashes here.

File details

Details for the file mcap_to_mp4-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: mcap_to_mp4-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcap_to_mp4-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3a897ce9b25c5927b3135e216358ac04af48e5b68db0fdc0879cd15394d21178
MD5 cff25dc1087bb053f13da8cf10786328
BLAKE2b-256 5bb225f3aac34d4de93a55dae50590e06b44d8850207c7424fe594cde2530bff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page