rosbag2video.py
rosbag to video file conversion tool
by Maximilian Laiacker 2025
[email protected]
with contributions from
David Silva 2025,
Abel Gabor 2019,
Bey Hao Yun 2024,
[email protected],
[email protected]
[email protected]
Build docker images using the commands below:
- Download
rosbag2video:
install python3
cd $HOMEgit clone https://github.com/mlaiacker/rosbag2videoinstall dependencies
sudo apt install ffmpeg
pip install rosbags
pip install opencv-pythonMostly tested with bags containing
msg_type: sensor_msgs/msg/CompressedImage msg_encoding: jpegOr use docker if you want to:
- Build docker image for running ROS 1
rosbag2video.py:
docker build -f Dockerfile.ros1 -t rosbag2video:noetic .- Build docker image for running ROS 2
ros2bag2video.py:
docker build -f Dockerfile.ros2 -t rosbag2video:humble .By default it will extract all compressed image topics inside the bag directory with the name of .mp4 ('/' inside the topic name will be replaced by '_') as mjpeg encoded video with 30fps.
usage: rosbag2video [-h] [-v] [-r RATE] [-t TOPIC] [-o OFILE] [--save_images] [--frames FRAMES] rosbag [rosbag ...]
Convert ROS bag (1/2) to video using ffmpeg.
positional arguments:
rosbag Input File(s)
options:
-h, --help show this help message and exit
-v, --verbose Run rosbag2video script in verbose mode.
-r RATE, --rate RATE Video framerate
-t TOPIC, --topic TOPIC
Topic Name
-o OFILE, --ofile OFILE
Output File
--save_images Boolean flag for saving extracted .png frames in frames/
--frames FRAMES Limit the number of frames to exportdocker run -it --rm \
--name rosbag2video_c \
-v .:/rosbag2video_workspace \
rosbag2video:noetic bashsource /opt/ros/noetic/setup.bashpython3 rosbag2video.py -t <topic_name> -i <bag_file_name> -o <output_video_file_name>
# Eg. python3 rosbag2video.py -t /cam0/image_raw -i ar_tracking_1.bag -o myvideo.mp4docker run -it --rm \
--name rosbag2video_c \
-v .:/rosbag2video_workspace \
rosbag2video:humble bashsource /opt/ros/humble/setup.bashExample: extract all image topics form one ore more rosbag2 directories or bags
python3 rosbag2video.py <bag_folder_name>
# Eg. python3 rosbag2video.py rosbag2_2024_10_11-19_45_28 -o myvideo.mp4Example: extract a specific topic
python3 rosbag2video.py -t <topic_name> -o <output_video_file_name> <bag_folder_name>
# Eg. python3 rosbag2video.py -t /cam0/image_raw -o myvideo.mp4 rosbag2_2024_10_11-19_45_28