Difference between revisions of "Feature:Audio/video communication"
(IRC is the way to go for prototype) |
|||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | == Please note == | ||
+ | |||
+ | This feature is not on the immediate roadmap anymore. If you want to contribute (and you're prepared to lead the development of the entire feature), please contact the core team. Thanks. | ||
+ | |||
== Summary == | == Summary == | ||
− | + | Kosmos comes with integrated video- and audio chat capabilities. In the beginning, this is limited to 1on1 calls, but we will support conferencing and/or broadcasting at a later point. WebRTC ([http://webrtc.org "Web Real-time Communication"]) is used to enable this. WebRTC currently works in Firefox, Chrome, FF and Chrome on Android, Opera and some lesser known browsers (e.g. Bowser on iOS). We might switch to ORTC ([http://ortc.org "Object RTC"]) at some point, which is a lower-level standard that will be supported in Internet Explorer also. | |
== Features == | == Features == | ||
− | |||
− | |||
=== HyperChannel Integration === | === HyperChannel Integration === | ||
− | A video stream (or audio symbol for non-video) will be integrated into the | + | A video stream (or audio symbol for non-video) will be integrated into the Hyperchannel UI (maybe in an extra tab?) You can also "pop-out" this UI component, which makes working on multiple screens easier (and requesting full screen simpler). |
=== Feature Ideas for Later™ === | === Feature Ideas for Later™ === | ||
Line 16: | Line 18: | ||
* Conferencing | * Conferencing | ||
* Broadcasting | * Broadcasting | ||
− | * Call in to a WebRTC call via plain old phone system | + | * Call in to a WebRTC call via plain old phone system (e.g. via [https://www.sipgate.io sipgate] or similar) |
==== Stand Alone Application ==== | ==== Stand Alone Application ==== | ||
− | The WebRTC | + | The WebRTC stand-alone application will be needed in the following cases: |
* One of the participants is not on HC, but using an IRC Client | * One of the participants is not on HC, but using an IRC Client | ||
* Both parties are using IRC. The Server/Mod generates a room link on the SA app for them. Or maybe: Don't support this scenario? | * Both parties are using IRC. The Server/Mod generates a room link on the SA app for them. Or maybe: Don't support this scenario? | ||
− | * Inviting people to an 1on1 chat that are not part of the current | + | * Inviting people to an 1on1 chat that are not part of the current Kosmos organisation (maybe via email) |
The SA application displays the video stream of the other party, however, some kind of text communication channel is still needed (people want to exchange links etc) - This will be done via IRC or WebRTC's DataChannels. | The SA application displays the video stream of the other party, however, some kind of text communication channel is still needed (people want to exchange links etc) - This will be done via IRC or WebRTC's DataChannels. | ||
Line 38: | Line 40: | ||
* Peers can exchange some messages w/ each other (like "offer: i can do this codec" or "ice: i have this kind of nat") | * Peers can exchange some messages w/ each other (like "offer: i can do this codec" or "ice: i have this kind of nat") | ||
− | It is implemented on top of the existing IRC channels (via | + | It is implemented on top of the existing IRC channels (via SocketHub) using special message formats, which will get parsed by the HC Client. For backwards compatibility (later), it could include a link to the SA app: |
A → B [67p-rtc-invite] Here is your video call: https://playground.p67.io/rtc/bilfgneehlrieli | A → B [67p-rtc-invite] Here is your video call: https://playground.p67.io/rtc/bilfgneehlrieli | ||
Line 44: | Line 46: | ||
A → B [67p-rtc-params] (Signaling messages) | A → B [67p-rtc-params] (Signaling messages) | ||
... | ... | ||
+ | |||
+ | == Before feature launch == | ||
+ | |||
+ | * In order to be able to quickly launch meetings before having our own integration, we could create scripts for hal8000 to start new meetings at e.g. g2m, meet.jit.si, talky, palava.tv. | ||
+ | |||
+ | == Notes == | ||
+ | |||
+ | * http://socket.io/blog/socket.io-p2p |
Latest revision as of 09:50, 5 May 2017
Contents
Please note
This feature is not on the immediate roadmap anymore. If you want to contribute (and you're prepared to lead the development of the entire feature), please contact the core team. Thanks.
Summary
Kosmos comes with integrated video- and audio chat capabilities. In the beginning, this is limited to 1on1 calls, but we will support conferencing and/or broadcasting at a later point. WebRTC ("Web Real-time Communication") is used to enable this. WebRTC currently works in Firefox, Chrome, FF and Chrome on Android, Opera and some lesser known browsers (e.g. Bowser on iOS). We might switch to ORTC ("Object RTC") at some point, which is a lower-level standard that will be supported in Internet Explorer also.
Features
HyperChannel Integration
A video stream (or audio symbol for non-video) will be integrated into the Hyperchannel UI (maybe in an extra tab?) You can also "pop-out" this UI component, which makes working on multiple screens easier (and requesting full screen simpler).
Feature Ideas for Later™
- Screensharing
- Conferencing
- Broadcasting
- Call in to a WebRTC call via plain old phone system (e.g. via sipgate or similar)
Stand Alone Application
The WebRTC stand-alone application will be needed in the following cases:
- One of the participants is not on HC, but using an IRC Client
- Both parties are using IRC. The Server/Mod generates a room link on the SA app for them. Or maybe: Don't support this scenario?
- Inviting people to an 1on1 chat that are not part of the current Kosmos organisation (maybe via email)
The SA application displays the video stream of the other party, however, some kind of text communication channel is still needed (people want to exchange links etc) - This will be done via IRC or WebRTC's DataChannels.
Technical Implementation
Components: Client/UI Integration, Signaling Backend (might be IRC/SH), TURN Relay, SFU/MCU for Conferencing > 4
Signaling
WebRTC requires "signaling" which serves two purposes:
- Peers meet each other
- Peers can exchange some messages w/ each other (like "offer: i can do this codec" or "ice: i have this kind of nat")
It is implemented on top of the existing IRC channels (via SocketHub) using special message formats, which will get parsed by the HC Client. For backwards compatibility (later), it could include a link to the SA app:
A → B [67p-rtc-invite] Here is your video call: https://playground.p67.io/rtc/bilfgneehlrieli B → A [67p-rtc-accept] Accepted A → B [67p-rtc-params] (Signaling messages) ...
Before feature launch
- In order to be able to quickly launch meetings before having our own integration, we could create scripts for hal8000 to start new meetings at e.g. g2m, meet.jit.si, talky, palava.tv.