Skip to content

WebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer

License

Notifications You must be signed in to change notification settings

introlab/opentera-webrtc

Repository files navigation

OpenTera - WebRTC

Actions Status

WebRTC is a standard for real-time audio/video/data communication and is mostly used in web browsers. For the OpenTera micro-service architecture, we wanted to use Google's native WebRTC implementation for robots so we would have more control on the streams and develop a framework that is optimized for robot teleoperation. We also wanted to use hardware acceleration if possible on embedded platforms.

This project provides:

License

By default, libwebrtc is built with non-free codecs. See webrtc-native-build to build without them.

API Documentation

API Documentation is available here.

How to Contribute

Please read the Code of Conduct and CONTRIBUTING files.

Dependencies

Build Instructions

Examples

C++

Python

Javascript

Hardware Acceleration with GStreamer

Hardware acceleration depends on the platform you are using to build opentera-webrtc. The following table summarizes supported hardware and GStreamer plugins:

Platform VP8 VP9 H.264
Jetson TX2/Nano nvv4l2vp8enc, nvv4l2decoder nvv4l2decoder nvv4l2h264enc, nvv4l2decoder
Jetson Xavier NX X nvv4l2decoder nvv4l2h264enc, nvv4l2decoder
Jetson AGX Xavier X nvv4l2decoder nvv4l2h264enc, nvv4l2decoder
Jetson Orin / Orin Nano / Orin NX X nvv4l2decoder nvv4l2h264enc, nvv4l2decoder
Raspberry Pi 4 X X v4l2h264enc, v4l2h264dec
VA-API vaapivp8enc, vaapivp8dec vaapivp9dec vaapih264enc, vaapih264dec
Apple Media X X vtenc_h264, vtdec

Note that VP9 encoding is under development, see issue 117.

ROS

  • The C++ library and Python bindings are used in our opentera_webrtc_ros ROS package. RGB images published in ROS topics can be easily used for streaming in a RTCPeerConnection using our signaling server. Hardware acceleration and codec selection can be used if available.

Frontend

Authors

  • Marc-Antoine Maheux (@mamaheux)
  • Dominic Létourneau (@doumdi)
  • Philippe Warren (@philippewarren)
  • François Michaud (@michaudf)

Contributors

  • Cédric Godin (@godced)
  • Ian-Mathieu Joly (@joli-1801)

Sponsor

IntRoLab

IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab