![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged web_video_server at Robotics Stack Exchange
![]() |
web_video_server package from web_video_server repoweb_video_server |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/RobotWebTools/web_video_server.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-28 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Błażej Sowa
Authors
- Mitchell Wills
web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats
This node provides HTTP streaming of ROS image topics in various formats, making it easy to view robot camera feeds and other image topics in a web browser without requiring special plugins or extensions.
Features
- Stream ROS image topics over HTTP in multiple formats:
- MJPEG (Motion JPEG)
- VP8 (WebM)
- VP9 (WebM)
- H264 (MP4)
- PNG streams
- ROS compressed image topics
- Adjustable quality, size, and other streaming parameters
- Web interface to browse available image topics
- Single image snapshot capability
- Support for different QoS profiles in ROS 2
Installation
Dependencies
- ROS (Noetic) or ROS 2 (Humble+)
- OpenCV
- FFmpeg/libav
- Boost
- async_web_server_cpp
Installing packages
For newer ROS2 distributions (humble, jazzy, rolling) it is possible to install web_video_server as a package:
sudo apt install ros-${ROS_DISTRO}-web-video-server
Building from Source
Create a ROS workspace if you don’t have one:
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
Clone this repository:
# ROS 2
git clone https://github.com/RobotWebTools/web_video_server.git
# ROS 1
git clone https://github.com/RobotWebTools/web_video_server.git -b ros1
Install dependencies with rosdep:
cd ~/ros_ws
rosdep update
rosdep install --from-paths src -i
Build the package and source your workspace:
colcon build --packages-select web_video_server
source install/setup.bash
Usage
Starting the Server
# ROS 1
rosrun web_video_server web_video_server
# ROS 2
ros2 run web_video_server web_video_server
Configuration
Server Configuration Parameters
Parameter | Type | Default | Possible Values | Description |
---|---|---|---|---|
port |
int | 8080 | Any valid port number | HTTP server port |
address |
string | “0.0.0.0” | Any valid IP address | HTTP server address (0.0.0.0 allows external connections) |
server_threads |
int | 1 | 1+ | Number of server threads for handling HTTP requests |
ros_threads |
int | 2 | 1+ | Number of threads for ROS message handling |
verbose |
bool | false | true, false | Enable verbose logging |
default_stream_type |
string | “mjpeg” | “mjpeg”, “vp8”, “vp9”, “h264”, “png”, “ros_compressed” | Default format for video streams |
publish_rate |
double | -1.0 | -1.0 or positive value | Rate for republishing images (-1.0 means no republishing) |
Running with Custom Parameters
You can configure the server by passing parameters via the command line:
```bash
ROS 1
rosrun web_video_server web_video_server _port:=8081 _address:=localhost _server_threads:=4
File truncated at 100 lines see the full file
Changelog for package web_video_server
2.1.0 (2025-05-21)
- Use target_link_libraries instead of ament_target_dependencies (#182)
- Fix compile warnings (#176)
- Use chrono steady clock for frame timing (#173)
- Add pkg-config dependency (#175)
- Separate web_video_server into a component and an executable (#168)
- Contributors: Błażej Sowa, Fabian Freihube, Joe Dinius, Ph.D., Lars Lorentz Ludvigsen, Mat198
2.0.1 (2024-10-26)
- Add ros_environment to test dependencies (#166)
- Contributors: Błażej Sowa
2.0.0 (2024-10-11)
- Replace boost with std (#164)
- Add ament_cpplint test, resolve TODOs (#162)
- Add license headers to all C++ source files, update copyrights (#161)
- Add support for alpha pngs by adding per stream type decode functions (backport #106) (#163)
- Add link to /stream in stream list (backport #118) (#160)
- Add support for jpg compression format (backport #142) (#159)
- Reformat the code with uncrustify (#158)
- Use hpp extension for headers (#157)
- Fix request logging, remove global parameters (#156)
- Replace nh with node (#155)
- Fix declaring and retrieving node parameters (#154)
- Fix usage of deprecated libavcodec functions (#150)
- Use cv_bridge hpp headers when available (#149)
- Use target_link_libraries instead of ament_target_dependencies where applicable
- Don't install headers
- Add CI workflow and ament_lint tests (#148)
- Update package maintainer
- allow topic searches to continue past invalid multi-type topics. (#146)
- Add QoS profile query parameters (#133)
- Fix build for ROS2 Humble (#129)
- Fix build for ROS2 Foxy (#111)
- Contributors: Błażej Sowa, Domenic Rodriguez, Robert Brothers, Sebastian Castro, Tina Tian, TobinHall, Matthew Bries
1.0.0 (2019-09-20)
- Port to ROS 2
0.2.1 (2019-06-05)
- Restream buffered frames with minimum publish rate
(#88)
- Restream buffered frames with minimum publish rate
- Implement restreaming for ros_compressed_streamer
- Update travis config (#89)
- Fall back to mjpeg if ros_compressed is unavailable (#87)
- Contributors: Jihoon Lee, Viktor Kunovski, sfalexrog
0.2.0 (2019-01-30)
- Add "default_stream_type" parameter (#84) This allows users to specify default stream type in their .launch files. Using a "ros_compressed" stream type sometimes results in a much lower resource consumption, and having it set as a default is much nicer for end users.
- Add a workaround for MultipartStream constant busy state
(#83)
- Add a workaround for MultipartStream constant busy state
- Remove C++11 features
- lax rule for topic name (#77)
- Add PngStreamer (#74)
- fix SteadyTimer check for backported ROS versions (#71) i.e. on current kinetic
- Pkg format 2
(#68)
- use package format 2
- add missing dependency on sensor_msgs
- fixed undeclared CODEC_FLAG_GLOBAL_HEADER (#65)
- Contributors: Andreas Klintberg, Dirk Thomas, Felix Ruess, Kazuto Murase, Viktor Kunovski, sfalexrog
0.1.0 (2018-07-01)
-
Avoid queuing of images on slow ethernet connection (#64)
-
use SteadyTimer (if available) for cleaning up inactive streams (#63)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
ffmpeg |
pkg-config |
Dependant Packages
Name | Deps |
---|---|
leo_bringup |