Skip to content

mlaiacker/rosbag2video

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rosbag2video

rosbag2video.py
rosbag to video file conversion tool
by Maximilian Laiacker 2025
post@mlaiacker.de

with contributions from
David Silva 2025,
Abel Gabor 2019,
Bey Hao Yun 2024,
baquatelle@gmail.com,
beyhy94@gmail.com
a.j.blight@leeds.ac.uk

Install

Build docker images using the commands below:

  1. Download rosbag2video:

install python3

cd $HOME
git clone https://github.com/mlaiacker/rosbag2video

install dependencies

sudo apt install ffmpeg
pip install rosbags
pip install opencv-python

Mostly tested with bags containing

msg_type: sensor_msgs/msg/CompressedImage msg_encoding: jpeg

Or use docker if you want to:

  1. Build docker image for running ROS 1 rosbag2video.py:
docker build -f Dockerfile.ros1 -t rosbag2video:noetic .
  1. Build docker image for running ROS 2 ros2bag2video.py:
docker build -f Dockerfile.ros2 -t rosbag2video:humble .

Usage

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 export

ROS 1

docker run -it --rm \
    --name rosbag2video_c \
    -v .:/rosbag2video_workspace \
  rosbag2video:noetic bash
source /opt/ros/noetic/setup.bash
python3 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.mp4

ROS 2

docker run -it --rm \
    --name rosbag2video_c \
    -v .:/rosbag2video_workspace \
  rosbag2video:humble bash
source /opt/ros/humble/setup.bash

Example: 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.mp4

Example: 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

About

converts image sequence in ros bag files to video files

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 13

Languages