Automate the capture a full BigBlueButton conference replay, with bbb-downloader

BigBlueButton, aka BBB, is a webrtc conferencing solution, that among many features, allows to record a conference, for later replay.

We have been working together with my colleague François Trahay, on a set of scripts (bbb-downloader) that will allow to easily (on Linux) download recordings of BBB conferences, for local backup, video editing, upload on video sharing platforms, etc. This is particularly useful in our distance learning contexts where students may have to catch up on a live session that was recorded.

We have integrated a hackish solution to capture, as a single video, presentations that contained slide deck presentations. Let me explain why this was necessary.

A nice feature of BBB is the fact that, to present a slides deck, you don’t need to share your screen (as a video stream), but just have to upload your file, which is then auto-converted to images, that are sent to participants, in sync with your next/previous browsing of the slides.

This is great for participants with low bandwidth, which can see the slides (“static” images) instead of receiving a full screen video stream.

But a side effect is that the recording of a  class/conference that is done by BBB replays the slides just as it was done live : displaying images one after the other.

While it is easy to retrieve the audio, webcams of participants, or screen sharings as video streams, directly available from the recordings replay app, it is thus not the same for the slides, which don’t come as a video.

Our script will perform a replay, using a Docker container which drives Selenium under the hood, to capture the full replay, as a single video, which then includes the slides and everything. You can see my demo of this process in the following video:

bbb-downloader full capture demo.

It takes long to replay, in real-time, the recordings, to perform this capture… but it works. Kudos to elgalu/docker-selenium for the Docker env.

Feel free to test it and profit, or to report issues in the Guthub issues of the repo:

Integrating JUnit tests inside a PHPUnit+Selenium test suite

I’ve spent some time recently integrating the OSLC open source test suite (from the OSLC open source support project)into the FusionForge test suite.

FusionForge‘s test suite uses PHPUnit to drive Selenium (RC) “end user” like tests. Selenium is a tool that makes such tests possible by piloting an instance of FireFox browsing the Web interface of the forge, in a controlled environment.

The OSLC test suite consists in a series of JUnit tests, which is driven by Maven (initially started from inside Eclipse, then also from command-line after I found the nasty command line parameters and changes in the pom.xml file that were required ;).

The whole of the test suite may not pass for our implementation of OSLC-CM in FusionForge, so some tests fail, but I don’t bother too much as this is “normal”, and all we’re caring for at the moment is mainly non-regression. There seemed to be no way to exclude some of the tests from the suite for the moment, but fortunately, that doesn’t matter, since the way I have integrated both test suites happens to allow the verification of only success on some of the tests.

So, the way they are integrated is through execution of the JUnit suite during one of the test cases of the Selenium suite (using a system( ) PHP call), which generates an HTML report (using the Maven SureFire reports plugin), which can then be viewed in the Web pages of the tested forge, so that Selenium + PHPUnit assertions can verify the content of the test report.

This is a bit hackish, but all in all suites our needs so far. Next step is to see if it works in other people’s test environments, including the automated executions in Hudson.