introlab / opentera-webrtc Goto Github PK
View Code? Open in Web Editor NEWWebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer
License: Apache License 2.0
WebRTC JavaScript, C++ and Python libraries and signaling server for the OpenTera project with hardware acceleration with GStreamer
License: Apache License 2.0
Describe the bug
Some of the tests on macOS are flaky (they sometimes work, and they sometimes fail unexplicably).
Frequently caused by sockets (socket.io) connections.
Also sometimes it is because of broken pipes (SIGPIPE).
Also sometimes, tests just fail.
This does not happen in GitHub's CI macOS runners, only on local machines.
There might be two different problems: websockets (socket.io) and datagrams (low-level libwebrtc).
The socket function fails inside of libwebrtc (here).
To Reproduce
Run tests on macOS multiple times.
Expected behavior
The tests always succeed.
Desktop (please complete the following information):
Additional context
This could be caused by a security feature of macOS 13, maybe. This is worth exploring.
Add your name to as authors. Add IntRoLab @ UdeS as sponsor.
In the web client it's relatively easy to open and close some track of the stream using MediaStream and MediaStreamTrack :
let localstream = null;
openteraWebrtcWebClient.devices.getDefaultStream().then(stream => {
localStream = stream;
});
// Mute mic
localstream.getAudioTracks().forEach(track => track.enabled = false);
// Close camera:
localstream.getVideoTracks().forEach(track => track.enabled = false);
A set of function like mute(true)
and cameraOpen(true)
could be useful particularly for the C++ and the Python client where the implementation of this features could be more complexe.
I tried to build an android project using C++ but found that the library does not support building under the NDK
Keep the joss_paper in a separate branch and remove it from main since it was not published.
Currently, some tests hang or fail on Windows IF they are run all at once. Every test can pass if ran individually.
This could be investigated and fixed.
Partly blocked by #82.
When the user instantiate a new StreamClient
he can pass a null value in the attribute localStream
of the streamConfiguration
parameters of the constructor:
const StreamConfiguration = {
localStream: nullSrcVideoElement.srcObject, // Where nullSrcVideoElement.srcObject = null
isSendOnly: false
};
streamClient = new openteraWebrtcWebClient.StreamClient(SignalingServerConfiguration, StreamConfiguration, RtcConfiguration, logger);
If the user expect that he had pass a valid value to localStream
it can be really hard for him to figure it out what's wrong in his code without any warning.
This would allow full featured Python examples (with and without ROS).
Github action cpp-python-tests.yml should be modified to test Debug version.
https://opensource.apple.com/source/WebCore/WebCore-7609.1.20.0.9/platform/mediastream/libwebrtc/
Should install all required headers and libraries for external compilation.
Translations should be part of the project.
Audio is required for bi-directional webrtc communications in some use cases. This would allow to use ODAS separated audio directly as an audio input stream. Other applications would include speech-to-text features where an audio stream gets processed and returns corresponding text in the data channel.
When enabling software GStreamer video codecs and forcing VP9, the video streams do not works.
Add description and documentation to the readme file.
Installing opentera-webrtc-native from https://pypi.org/ would be great and save time for new projects using the library. I think we should explore how to automate distribution from GitHub.
The library needs to be statically linked so we have no dependency on the system's OpenCV library.
Allow to build on Windows
Have a look at this :
https://github.com/crow-misia/libwebrtc-bin/releases
This might simplify compilation. CMakeFiles should download and extract the binary packages instead of building libwebrtc? This would facilitate development/deployment on ARM/ARM64 targets.
Fix segfaults in tests on MacOS.
Create a Python package that allows easy import of the opentera_webrtc_native_client library without needing the .so file in the working directory of the running script.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.