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:
By default, libwebrtc is built with non-free codecs. See webrtc-native-build to build without them.
API Documentation is available here.
Please read the Code of Conduct and CONTRIBUTING files.
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.
IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab