Difference between revisions of "Connecting WebRTC to BBB"

From CDOT Wiki
Jump to: navigation, search
(Issues)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
  This page contains discussion on the best way to go about connecting a WebRTC client to a BigBlueButton server.
 
  This page contains discussion on the best way to go about connecting a WebRTC client to a BigBlueButton server.
 
 
=Audio=
 
=Audio=
 
I think we should focus on getting the audio working first. It's much more important for a user to be able to participate in the audio portion of a meeting then it is to get their webcam to stream.
 
I think we should focus on getting the audio working first. It's much more important for a user to be able to participate in the audio portion of a meeting then it is to get their webcam to stream.
Line 12: Line 11:
 
# Add audio WebRTC components to the BBB HTML5 client
 
# Add audio WebRTC components to the BBB HTML5 client
 
# Loop the audio back into the client to make sure it works
 
# Loop the audio back into the client to make sure it works
# Get the HTML5 clients to connect to each other solely through WebRTC
+
# Get the HTML5 clients to connect to each other solely through WebRTC (why?)
 
# Connect the HTML5 clients to the SIP server
 
# Connect the HTML5 clients to the SIP server
 
# Get the HTML5 clients to communicate through the SIP server
 
# Get the HTML5 clients to communicate through the SIP server
Line 47: Line 46:
 
# It might not be possible to connect a native client to Chrome
 
# It might not be possible to connect a native client to Chrome
 
# There will be latency due to the multiple connections and conversions.
 
# There will be latency due to the multiple connections and conversions.
 +
=Proposal milestones=
 +
 +
==Audio==
 +
* BBB HTML5 Client Connection/Communication through a SIP server (such as Asterisk or FreeSWITCH)  (3 weeks)
 +
* Investigate other server-based options besides a SIP server (there may not be any at this point)  (2 weeks)
 +
* Bridge incoming AUDIO from SIP server to BigBlueButton server (3 weeks)
 +
* Initiating and controlling WebRTC connection from BigBlueButton HTML5 client  (2 weeks)
 +
 +
==Video==
 +
* BBB HTML5 Client Connection/Communication through a SIP server (such as Asterisk or FreeSWITCH) (3 weeks)
 +
* Investigate other server-based options besides a SIP server (there may not be any at this point)  (2 weeks)
 +
* Bridge incoming VIDEO from SIP server to BigBlueButton server (3 weeks)
 +
* Initiating and controlling WebRTC connection from BigBlueButton HTML5 client  (2 weeks)

Latest revision as of 16:30, 6 February 2013

This page contains discussion on the best way to go about connecting a WebRTC client to a BigBlueButton server.

Audio

I think we should focus on getting the audio working first. It's much more important for a user to be able to participate in the audio portion of a meeting then it is to get their webcam to stream.

Approaches

I see two different possible paths to connect the two. One is to make WebRTC connect with Freeswitch directly. The other is to set up an Asterix server and have the WebRTC client join Asterix and then Asterix connects to Freeswitch.

A group has already developed an opensource solution so that WebRTC clients can connect through an Asterix server. So if all we're looking to do is get a proof of concept prototype using an Asterix server might prove to be the quickest option.

Steps to Take

  1. Add audio WebRTC components to the BBB HTML5 client
  2. Loop the audio back into the client to make sure it works
  3. Get the HTML5 clients to connect to each other solely through WebRTC (why?)
  4. Connect the HTML5 clients to the SIP server
  5. Get the HTML5 clients to communicate through the SIP server
  6. If Asterix is used, connect the Asterix clients to Freeswitch
  7. Convert the WebRTC codec to Speex
  8. Connect the HTML5 client to the BBB audio conference
  9. Profit

Issues

  • WebRTC only works with the G.711 and (another I can't think of) codecs. Whereas BigBlueButton and Freeswitch are using Speex.
  • There's no working example connecting WebRTC to Freeswitch.
  • Introducing a second SIP component and any conversion it requires will likely cause latency to occur.
  • Google's implementation of WebRTC doesn't follow all of the proper conventions for SIP communication and requires some converting.

Video

Getting the video connected will be a more difficult task. There's no precedent set yet for it even to be possible so we will be basically making our own way.

Approaches

The first, and currently only, idea I have is to create a native Linux client that would receive a "call" that contained only the video. The Linux client would then somehow send it to Red5 to be re-streamed to the Flash clients.

Steps to Take

  1. Add video WebRTC components to the BBB HTML5 client
  2. Loop the video back to the client to make sure it works
  3. Create a native Linux client
  4. Connect the Chrome WebRTC to native client
  5. Convert the WebRTC video to something Red5 will accept
  6. Stream the video to Red5
  7. Play in Flash clients
  8. Profit

Issues

  1. No one else has done this yet
  2. Might not be possible to convert the video formats
  3. It might not be possible to connect a native client to Chrome
  4. There will be latency due to the multiple connections and conversions.

Proposal milestones

Audio

  • BBB HTML5 Client Connection/Communication through a SIP server (such as Asterisk or FreeSWITCH) (3 weeks)
  • Investigate other server-based options besides a SIP server (there may not be any at this point) (2 weeks)
  • Bridge incoming AUDIO from SIP server to BigBlueButton server (3 weeks)
  • Initiating and controlling WebRTC connection from BigBlueButton HTML5 client (2 weeks)

Video

  • BBB HTML5 Client Connection/Communication through a SIP server (such as Asterisk or FreeSWITCH) (3 weeks)
  • Investigate other server-based options besides a SIP server (there may not be any at this point) (2 weeks)
  • Bridge incoming VIDEO from SIP server to BigBlueButton server (3 weeks)
  • Initiating and controlling WebRTC connection from BigBlueButton HTML5 client (2 weeks)