-
Notifications
You must be signed in to change notification settings - Fork 203
Updated README #180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Updated README #180
Changes from 3 commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,174 @@ | ||
web_video_server [](https://travis-ci.org/RobotWebTools/web_video_server) | ||
================ | ||
# web_video_server - HTTP Streaming of ROS Image Topics in Multiple Formats | ||
|
||
#### HTTP Streaming of ROS Image Topics in Multiple Formats | ||
This node combines the capabilities of [ros_web_video](https://github.com/RobotWebTools/ros_web_video) and [mjpeg_server](https://github.com/RobotWebTools/mjpeg_server) into a single node. | ||
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. | ||
|
||
For full documentation, see [the ROS wiki](http://ros.org/wiki/web_video_server). | ||
## Features | ||
|
||
[Doxygen](http://docs.ros.org/indigo/api/web_video_server/html/) files can be found on the ROS wiki. | ||
- 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 | ||
|
||
This project is released as part of the [Robot Web Tools](http://robotwebtools.org/) effort. | ||
## Installation | ||
|
||
### License | ||
### 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 | ||
|
||
```bash | ||
# For ROS 1 | ||
mkdir -p ~/catkin_ws/src | ||
cd ~/catkin_ws/src | ||
git clone https://github.com/RobotWebTools/web_video_server.git | ||
git checkout ros1 | ||
cd .. | ||
catkin_make | ||
|
||
# For ROS 2 | ||
mkdir -p ~/ros2_ws/src | ||
cd ~/ros2_ws/src | ||
git clone https://github.com/RobotWebTools/web_video_server.git | ||
cd .. | ||
colcon build --packages-select web_video_server | ||
``` | ||
larsll marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Usage | ||
|
||
### Starting the Server | ||
|
||
```bash | ||
# 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 | ||
|
||
# ROS 2 | ||
ros2 run web_video_server web_video_server --ros-args -p port:=8081 -p address:=localhost -p server_threads:=4 | ||
``` | ||
|
||
### View Available Streams | ||
``` | ||
http://localhost:8080/ | ||
``` | ||
The interface allows quick navigation between different topics and formats without having to manually construct URLs. | ||
|
||
This page displays: | ||
- All available ROS image topics currently being published | ||
- Direct links to view each topic in different formats: | ||
- Web page with streaming image | ||
- Direct stream | ||
- Single image snapshot | ||
|
||
### Stream an Image Topic | ||
|
||
There are two ways to stream the Image, as a HTML page via | ||
``` | ||
http://localhost:8080/stream_viewer?topic=/camera/image_raw | ||
``` | ||
or as a HTTP multipart stream on | ||
|
||
``` | ||
http://localhost:8080/stream?topic=/camera/image_raw | ||
``` | ||
#### URL Parameters for Streaming | ||
|
||
The following parameters can be added to the stream URL: | ||
|
||
| Parameter | Type | Default | Possible Values | Description | | ||
|-----------|------|---------|----------------|-------------| | ||
| `topic` | string | (required) | Any valid ROS image topic | The ROS image topic to stream | | ||
| `type` | string | "mjpeg" | "mjpeg", "vp8", "vp9", "h264", "png", "ros_compressed" | Stream format | | ||
| `width` | int | 0 | 0+ | Width of output stream (0 = original width) | | ||
| `height` | int | 0 | 0+ | Height of output stream (0 = original height) | | ||
| `quality` | int | 95 | 1-100 | Quality for MJPEG and PNG streams | | ||
| `bitrate` | int | 100000 | Positive integer | Bitrate for H264/VP8/VP9 streams in bits/second | | ||
| `invert` | flag | not present | present/not present | Invert image when parameter is present | | ||
| `default_transport` | string | "raw" | "raw", "compressed", "theora" | Image transport to use | | ||
| `qos_profile` | string | "default" | "default", "system_default", "sensor_data", "services_default" | QoS profile for ROS 2 subscribers | | ||
|
||
Examples: | ||
|
||
``` | ||
# Stream an MJPEG at 640x480 with 90% quality | ||
http://localhost:8080/stream?topic=/camera/image_raw&type=mjpeg&width=640&height=480&quality=90 | ||
|
||
# Stream H264 with higher bitrate | ||
http://localhost:8080/stream?topic=/camera/image_raw&type=h264&bitrate=500000 | ||
|
||
# Stream with inverted image (rotated 180°) | ||
http://localhost:8080/stream?topic=/camera/image_raw&invert | ||
|
||
``` | ||
|
||
### Get a Snapshot | ||
It is also possible to get a single image snapshot | ||
``` | ||
http://localhost:8080/snapshot?topic=/camera/image_raw | ||
``` | ||
#### URL Parameters for Snapshot | ||
|
||
| Parameter | Type | Default | Possible Values | Description | | ||
|-----------|------|---------|----------------|-------------| | ||
| `topic` | string | (required) | Any valid ROS image topic | The ROS image topic to stream | | ||
| `width` | int | 0 | 0+ | Width of output picture (0 = original width) | | ||
| `height` | int | 0 | 0+ | Height of output picture (0 = original height) | | ||
| `quality` | int | 95 | 1-100 | Quality for JPEG snapshots | | ||
| `invert` | flag | not present | present/not present | Invert image when parameter is present | | ||
| `default_transport` | string | "raw" | "raw", "compressed", "theora" | Image transport to use | | ||
| `qos_profile` | string | "default" | "default", "system_default", "sensor_data", "services_default" | QoS profile for ROS 2 subscribers | | ||
|
||
## About | ||
|
||
This project is released as part of the [Robot Web Tools](https://robotwebtools.github.io/) effort. | ||
|
||
## License | ||
web_video_server is released with a BSD license. For full terms and conditions, see the [LICENSE](LICENSE) file. | ||
|
||
### Authors | ||
## Authors | ||
See the [AUTHORS](AUTHORS.md) file for a full list of contributors. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.