introlab / opentera-webrtc

WebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer
Apache License 2.0
33 stars 2 forks source link
cplusplus cpp gstreamer javascript jetson library opentera python raspberrypi robotics signaling-server webrtc

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

Frontend

Authors

Contributors

Sponsor

IntRoLab

IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab