Awesome
GSCam
This is a ROS package originally developed by the Brown Robotics
Lab for broadcasting any
GStreamer-based video stream via the
standard ROS Camera API. This fork has
several fixes incorporated into it to make it broadcast correct
sensor_msgs/Image
messages with proper frames and timestamps. It also allows
for more ROS-like configuration and more control over the GStreamer interface.
Note that this pacakge can be built both in a rosbuild and catkin workspaces.
GStreamer Library Support
gscam supports the following versions of GStreamer
0.1.x: Default
Install dependencies via rosdep
.
1.0.x: Experimental
Dependencies:
- gstreamer1.0-tools
- libgstreamer1.0-dev
- libgstreamer-plugins-base1.0-dev
- libgstreamer-plugins-good1.0-dev
Ubuntu Install:
12.04
sudo add-apt-repository ppa:gstreamer-developers/ppa
sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev
14.04
sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev
Usage:
- Use the CMake flag
-DGSTREAMER_VERSION_1_x=On
when building - See the Video4Linux2 launchfile example for an example of the differences in the GStreamer config lines
Notes:
- This has been tested with
v4l2src
ROS API (stable)
gscam
This can be run as both a node and a nodelet.
Nodes
gscam
Topics
camera/image_raw
camera/camera_info
Services
camera/set_camera_info
Parameters
~camera_name
: The name of the camera (corrsponding to the camera info)~camera_info_url
: A url (file://path/to/file
,package://pkg_name/path/to/file
) to the camera calibration file.~gscam_config
: The GStreamer configuration string.~frame_id
: The TF frame ID.~reopen_on_eof
: Re-open the stream if it ends (EOF).~sync_sink
: Synchronize the app sink (sometimes setting this tofalse
can resolve problems with sub-par framerates).
C++ API (unstable)
The gscam c++ library can be used, but it is not guaranteed to be stable.
Examples
See example launchfiles and configs in the examples directory. Currently there are examples for:
- Video4Linux2: Standard
video4linux-based cameras like
USB webcams.
- GST-1.0: Use the roslaunch argument
GST10:=True
for GStreamer 1.0 variant
- GST-1.0: Use the roslaunch argument
- Nodelet: Run a V4L-based camera in a nodelet
- Video File: Any videofile readable by GStreamer
- DeckLink:
BlackMagic
DeckLink SDI capture cards (note: this requires the
gst-plugins-bad
plugins)