-
-
Notifications
You must be signed in to change notification settings - Fork 775
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Audio/video calls integration #447
Comments
Thanks for doing some research into this. I think the approach I would take is to use Strophe.jingle (or something similar) with WebRTC. Would be a nice feature to have. Ideally a company that needs this feature would fund the development for it. |
I found this libjingle adaption for javascript https://github.com/otalk/jingle.js |
Any news? |
There are no plans to add audio/video support, but pull requests are welcome if someone wants to take up the challenge. |
maybe now webRTC would be a good technology to use. But yes it needs some effort to implement. |
If there is a person who can do this and embed the code for audio / video as in pix-art messages, he is ready to sponsor this project. |
@free-14 you mean Conversations, since Pix-Art is just a fork, right? Also... that's Java on Android... This is Javascript. |
I have a working conversejs plugin for jingle audio/video calls that works with the jingle implementation in Conversations. However, it has outstanding issues and requires a make-over to remove the out-dated jquery xml parsing. I am not free to work on it at the moment, but for anyone who has the time, space and ability, here is the link https://github.com/igniterealtime/pade/blob/version-1.xx/docs/inverse/plugins/jinglecalls.js |
|
There is another ready-made solution that works well in nextcloud - Jsxc. It is open source. I think this decision is not bad when combined. |
Implementation of this feature is now part of our 2022 Google Summer of Code application. See here: https://wiki.xmpp.org/web/Google_Summer_of_Code_2022#Support_Audio/Video_calls_in_Converse I will be acting as mentor for this project. I've done a bit of research and want to write down my thoughts and findings as a resource for myself and whoever will be doing the implementation. Note: For now I'm just going to do a brain dump, and I'll likely update this comment multiple times over an extended period. IntroductionAudio/Video calls are done outside of XMPP via WebRTC. XMPP (in the form of the Jingle protocol extension) is merely used as a means to initiate and terminate an audio/video session. In plain language, this means that Jingle is used to call the other person (AFAIK that's why it's called "Jingle", like ringtone), and that person can then pick up, or reject the call. If they pick up the call, either person has the option to end the call at any time. Making the call and accepting, rejecting or ending a call are all session management operations that are done by sending XMPP stanzas between two clients. UI componentsSo, from a UX perspective, we need the following UI elements:
SpecificationsThe main XEPs related to this feature are:
How to start:We need to create an new plugin called Then I would start by writing tests, and I would start with [XEP-0353: Jingle Message Initiation](XEP-0353: Jingle Message Initiation). I would write a test where the user receives an incoming Jingle (XEP-0353) message and then checks that the right things happen (e.g. that the user is informed of the incoming call, and if they accept the call, that the right stanzas are sent out). Multiple tests could be written here, to go through the various scenarios explained in the XEPs. I would first write all the tests for the Jingle stanza traffic (and the associated UI elements) before worrying about WebRTC and actually setting up the audio/video calls. Once the tests (and resultant implementations) are done, we can look at actually setting up the WebRTC session in a popup. Other implementations that can be used as referenceCheck the license before just blindly copying code. MIT, BSD and MPL are ok, but GPL isn't. When reusing big chunks of code, make sure to include copyright and licencing information. |
JSXC has an example implementation that also works for group calls and with an SFU. They wrote down an overview here: https://www.jsxc.org/blog/2021/08/31/A-group-call-proposal.html |
@poVoq thanks, group calls are outside of the scope of this issue and the GSoC project. We can make a separate feature request for it. |
As discussed in our last video call, here is the information you need regarding the next step of showing information about calls in the chat history. The chat history is rendered via the component On line 34, you'll see it triggers a hook via ( See here:
What this code does, is it allows plugins to control which template is rendered for a particular message. To do so, you have to make sure that there is an attribute So what you can do, is when you parse an incoming message to see if it's a Jingle message (in That attribute will then be stored on the message object that gets created after parsing has been completed, and so when The above will handle incoming messages. For outgoing messages, you set the
You can then create a handler for that hook which returns a template to render the jingle message in the chat history. This template you need to create yourself. You can look at the general message template for inspiration: Your Jingle message template will have some similarities with regards to the markup it renders. Once all of this is done, you should be able to see your Jingle messages rendered inside the chat history. |
Hello, I just found an old draft for an Audio/Video support request I was planning to submit here. @jcbrand is this something you'd like to have in converse.js? I did a quick research on possible implementations. Pasting the contents below
A quick search for FOSS a/v web chat solutions returned https://www.jsxc.org/ (XMPP + voice/video) and https://github.com/Rantanen/mumble-web (mumble). I didn't find the sources for Firefox Hello (client and server), which works.
The go-to solution for audio/video over XMPP seems to be jingle. Much related to #161
Relevant links I found:
OTR does not seem to be able to encrypt audio/video streams, but there's ZRTP: XEP-0262: Use of ZRTP in Jingle RTP Sessions. Also:
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: