https://github.com/introlab/opentera-webrtc
WebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Keywords
Repository
WebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer
Basic Info
Statistics
- Stars: 37
- Watchers: 3
- Forks: 4
- Open Issues: 9
- Releases: 22
Topics
Metadata Files
README.md
OpenTera - WebRTC
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:
- A signaling server written in Python that can be used as a stand-alone server or embedded in our OpenTera Teleoperation Micro-Service
- A native libwebrtc wrapper that is used as a C++ base library for clients using our signaling server.
- GStreamer video codec factories for libwebrtc to enable both software and hardware encoders/decoders if available.
- Possiblity to force usage of a particular codec with VideoStreamConfiguration
- Python 3 bindings that are used as a Python module for clients using our signaling server.
- A JavaScript library That is used for web client developement and teleoperation interface using our signaling server.
License
By default, libwebrtc is built with non-free codecs. See webrtc-native-build to build without them.
- Apache License, Version 2.0
- For GStreamer components, please read this.
API Documentation
API Documentation is available here.
How to Contribute
Please read the Code of Conduct and CONTRIBUTING files.
Dependencies
- Most dependencies are part of the project with git submodules in the opentera-webrtc-native-client/3rdParty directory.
Build Instructions
- Please see 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 openterawebrtcros 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
- The JavaScript library is used for our opentera WebRTC teleoperation 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 - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab
Owner
- Name: IntRoLab
- Login: introlab
- Kind: organization
- Location: Sherbrooke, Québec, Canada
- Website: https://introlab.3it.usherbrooke.ca
- Repositories: 65
- Profile: https://github.com/introlab
IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab @ Université de Sherbrooke
GitHub Events
Total
- Release event: 1
- Watch event: 5
- Delete event: 1
- Push event: 19
- Pull request review event: 1
- Pull request event: 3
- Fork event: 3
- Create event: 3
Last Year
- Release event: 1
- Watch event: 5
- Delete event: 1
- Push event: 19
- Pull request review event: 1
- Pull request event: 3
- Fork event: 3
- Create event: 3
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 34
- Total pull requests: 131
- Average time to close issues: 4 months
- Average time to close pull requests: about 1 month
- Total issue authors: 6
- Total pull request authors: 5
- Average comments per issue: 0.38
- Average comments per pull request: 0.39
- Merged pull requests: 87
- Bot issues: 0
- Bot pull requests: 33
Past Year
- Issues: 1
- Pull requests: 10
- Average time to close issues: N/A
- Average time to close pull requests: 2 days
- Issue authors: 1
- Pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 1
Top Authors
Issue Authors
- philippewarren (7)
- doumdi (5)
- mamaheux (4)
- G-Lauz (2)
- BioR0bot (1)
- ihabZhaika (1)
Pull Request Authors
- mamaheux (41)
- dependabot[bot] (24)
- philippewarren (15)
- doumdi (11)
- joli-1801 (3)