Use WebRTC for video #3124

Open
ffdixon opened this Issue May 8, 2016 · 15 comments

Projects

None yet

4 participants

@ffdixon
Member
ffdixon commented May 8, 2016

Currently, BigBlueButton uses Flash for the video. While it works very well, as we build out the HTML5 client (which uses WebRTC for video) for mobile, we want to support WebRTC video in the web client as well.

This is going to be more possible as the browser that support WebRTC are moving towards supporting both h.264 and VP8/VP9.

@philjoseph

Hello I am starting to use BBB and consider joining the development effort as well. I wonder why not using WebRTC for video currently? Many commercial and opensource are using WebRTC for video conferencing even before WebRTC will support h.264 and VP8/VP9.

@ffdixon
Member
ffdixon commented Jul 17, 2016

The core of BigBlueButton video is red5 -- a very capable and stable open source implementation of the Flash media server. We've been using it for over seven years. The Flash client uses h.264. red5 supports h.264 (not VP8/VP9).

With WebRTC you have VP8/VP9 (and potentially h.264 with WebRTC 1.1).

Ideally, red5 would support both WebRTC signalling and VP8/VP9 codes and transcode transparently between h.264 and VP8/VP9. That's not going to happen soon.

On the audio side, we have a much cleaner solution: FreeSWITCH. It transcodes between speex (Flash) and Opus (WebRTC) seamlessly. The early design decision in BigBlueButton to separate audio streams and video streams made it possible for us to seamlessly upgrade the audio in BigBlueButton to use WebRTC (FireFox and Chrome) without affecting the video.

In a virtual classroom, audio trumps video. With BigBlueButton, you can have 15 webcams being shared no problems. See https://twitter.com/bigbluebutton/status/733073687197290496

FreeSWITCH is turning into a media control unit, see https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.6+Video. It shows a lot of possibilities for using it with the BigBlueButton HTML5 client.

For the use case of one person broadcasting video (such as desktop sharing) we can use WebRTC desktop sharing from the presenter, send it to FreeSWITCH, transcode it to h.264(using mod_av), and then forward it to red5 -- this way, all users would see the presenter's desktop sharing.

With webcams, we'll, the picture isn't so clear. Our plans are to release the HTML5 client without webcam support (except for desktop sharing). See http://docs.bigbluebutton.org/html/html5-design.html.

Again, in an on-line class, audio trumps video. So as long as the viewer on a mobile device can see everything the presenter is sharing (minus webcams) it's a viable (and much anticipated solution).

We can always add two-way video between Flash and HTML5 clients in a future iteration (hopefully as WebRTC 1.1 supports h.264).

If you have any suggestions Phil, we're welcome to hear them. How much experience do you have with development of video and audio-based conferencing?

@mschipperheyn

This gives a good background on the reasons why webrtc is not included in the HTML 5 version at this point (I never understood this before). It's more of a Red 5 issue than anything else. I read up a little on them and it seems that they are focusing their webrtc efforts on the Red 5 Pro (paid) version. So, not too hopeful here. I'm interested in understanding better this WebRTC desktop sharing of video, since in our case, our classroom setting usually a One to Many broadcast with a teacher broadcasting slides, video and audio and the students just listening with limited participation (mostly chat and poll).

@philjoseph

First sorry to had missed Fred Dixon reply, thanks to Mark post, I now see it. Thanks for the detailed reply Fred!

I do understand that BBB rely on Red5 and since they decided to work on WebRTC only for their Pro (fee based) version, WebRTC based video will not appear in BBB soon.

I wonder if you considered forking Red5 open source server to add the WebRTC support they do add to their Pro version or if you did consider not using Red 5 at all for a meeting where all participants have WebRTC capacities? That is don't you consider dropping Red5 for your so called HTML5 client?

I was planning to start a project for a customer that is looking for a e-learning platform coupled with a simple, easy to deploy and maintain CMS (I was planning to intregrate Jekyll to BBB). But this project is not yet starting and I had paused my interest in BBB, hopefully temporarily. I am building a new consulting operation and training young graduates developers to become Web and Mobile developers using react and react-native. I hope that I will soon be able to step more into BBB and contribute to it. I would like to see it using WebRTC for all client devices (touch and not touch) since I dislike Flash UX and performance.

@ffdixon
Member
ffdixon commented Aug 22, 2016

I think you'll see the project using WebRTC for video in the future. If your skilled with React and WebRTC your contributions would be welcome.

@ffdixon ffdixon closed this Aug 22, 2016
@mschipperheyn

I'm skilled in React, though as always with little time. I would be interested to understand what would be necessary for webrtc video to work vis a vis the dependency on Red5. Since end of the day, it's not just webrtc video, but also recording that is key for me

@Lekcy
Lekcy commented Nov 14, 2016

Hi Mr.Fred Dixon and experts,
My use case like Marc Schipperheyn, it's One to Many broadcast. I have 2 issues, please help me:

  1. With BigBlueButton, is it able to implement with:
  2. Flash for presenter with all current functionality
  3. And HTML5 client for viewers with desktop sharing, audio two ways, video one way (not sharing 2 way)...?
    If yes, how can I get the broadcast URL for viewers?
  4. I see that Kurento tutorial can support one to many broadcast running with Kurento media server. Is it able to implement it to run with BigBlueButton for sharing webcam by webrtc?

I'm new with BigBlueButton and feel like much but Flash is an issue, so please give me an idea.

Thanks so much!

@ffdixon
Member
ffdixon commented Nov 15, 2016

Hi Lecky,

The short answer is anything is possible.

We'll be looking more closely into Kurento in the coming months to see if we can broadcast video to remote HTML5 clients. That would give us two ways to broadcast video via WebRTC (FreeSWITCH and Kurento).

What you describe in (3) is what we have planned for the second iteration of the HTML5 client. The first release be receiving only a WebRTC stream of the desktop sharing. This is a more restricted use case for one way (or two way) video. For more details see

http://docs.bigbluebutton.org/html/html5-overview.html#phases-for-development-of-html5-client

@ffdixon ffdixon reopened this Nov 15, 2016
@ffdixon ffdixon added the Video label Nov 15, 2016
@Lekcy
Lekcy commented Nov 15, 2016

Hi Mr.Fred Dixon,
Thanks for your feedback, hope that the upgrade of html5client coming soon.

Another issue I'm facing is installing html5client for development. After installing and lots of fix it starts OK, but I can not login to the html5 site. This is my log:

test@ubuntu14:/home/firstuser/dev/bigbluebutton/bigbluebutton-html5$ ./start.sh
[[[[[ /home/firstuser/dev/bigbluebutton/bigbluebutton-html5 ]]]]]

=> Started proxy.
=> Meteor 1.4.2.1 is available. Update this project with 'meteor update'.
=> Started MongoDB.
I20161115-19:05:32.722(7)? info: Subscribed to 'bigbluebutton:from-bbb-apps:*'
I20161115-19:05:32.845(7)? info: SERVER STARTED. ENV=production mobileFont=16, desktopFont=14, autoJoinAudio=false, listenOnly=false, skipCheck=false, appName=BigBlueButton HTML5 Client, bbbServerVersion=1.0, copyrightYear=2015, html5ClientBuild=NNNN, defaultWelcomeMessage=Welcome to %%CONFNAME%%!

For help on using BigBlueButton see these (short) tutorial videos.

To join the audio bridge click the gear icon (upper-right hand corner). Use a headset to avoid causing background noise for others.


, lockOnJoin=true, defaultWelcomeMessageFooter=This server is running a build of BigBlueButton 1.0., basename=/html5client, httpsConnection=true
=> Started your app.

=> App running at: http://127.0.0.1/html5client
\

But when i access to the url http://127.0.0.1/html5client it throws errors on console:

W20161115-19:13:08.968(7)? (STDERR) error: in meetingId=null userId=null tried to perform subscribePoll without permission
W20161115-19:13:08.969(7)? (STDERR) ..while the authToken was undefined and the user's object is undefined
W20161115-19:13:08.969(7)? (STDERR) error: in meetingId=null userId=null tried to perform subscribeCaptions without permission
W20161115-19:13:08.970(7)? (STDERR) ..while the authToken was undefined and the user's object is undefined

I have tested with some installations on fresh VM but it's the same. Please help me!

Thanks so much!

@ffdixon
Member
ffdixon commented Nov 15, 2016

Hi Lecky,

Can you post your question about the HTML5 client to bigbluebutton-dev, at

https://groups.google.com/forum/#!forum/bigbluebutton-dev

Otherwise, this issue is going to get too unfocused and too difficult to manage.

@Lekcy
Lekcy commented Nov 15, 2016

Hi Mr.Fred Dixon,
Thanks for your feedback, I also posted the question at bigbluebutton-dev but maybe my request to join the group has not been approved yet.

So I could not post the question and returned to this thread.

Hope that it will be applied soon.

Thanks!

@ffdixon
Member
ffdixon commented Nov 15, 2016 edited

Please apply to join again. There is a challenge question you must answer; otherwise, we delete the application to the mailing list as we can't tell the difference between a human and a bot without getting an answer to the challenge question.

@mschipperheyn

@ffdixon I also had a lot of trouble getting on the list. As I recall the question is wrong.

@Lekcy
Lekcy commented Nov 15, 2016

I have posted my issue to the bbb-dev forum.

Thanks Fred Dixon!

@ffdixon
Member
ffdixon commented Nov 15, 2016

Good to hear Lecky.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment