gstcam是github上一个开元的ros软件包,它巧妙地将gstream流媒体框架引入ROS系统。通过利用 gstreamer 实现一个标准的ROS API接口.比如捕获usb uav camera 的图像,然后转化成 ros中 sensor_msgs/Image类型的image话题,发布到ros中,供其他节点使用。
1.gscam软件工作流程:
gscam 首先在launch文件中,通过参数gstcam_config设置一条gstreamer pipeline :
v4l2src device=$(arg DEVICE) ! video/x-raw-rgb,framerate=$(arg FPS) ! ffmpegcolorspace
其实这条pipeline还不完整,只有两个Elements, 一个是从设备中获取图像的v4l2src, 还有一个是颜色空间转换的ffmpegcolorspace,中间的那个是输入到ffmpegcolorspace的格式设定,最基本的其实还缺少一个sink Element, 所以gscam主要就在这里做文章,它在程序中创建了一个appsink Element,然后添加到pipeline中。
在gstreamer中,appsrc、appsink这两个element及其重要,通过他们可以在pipeline中调用第三方的代码。gscam就是通过使用appsink, 创建了一个缓存队列buffer, 通过对内存中的这个buffer拷贝、转换成sensor_msgs/Image的。
2.本地视频播放
roscd gscam
export GSCAM_CONFIG="v4l2src device=/dev/video2 ! video/x-raw-rgb,framerate=30/1 ! ffmpegcolorspace"
rosrun gscam gscam