"Trust me, I'm an Engineer" or how we streamed conference with OBS

kitor

New Member
First, thanks for this piece of software. We already used it on a few events, but this time we decided to take our stream to another level.
First, long story short: I'm member of IT association on Wroclaw University of Technology. Our best known thing is conference called Sesja Linuksowa (Linux Session). This year we invited Klaus Knopper (author of Knoppix distribution) and Lennard Poettering (known for avahi, system.d, pulseaudio...). As it took place last weekend, I'm writing this before I'll forget things ;)

Our setup:
PC with Phenom x4 960 BE (@ x6, 3,7GHz), 12 gigs of ram, Nvidia 650 for NVEnc - used for broadcast
2x Logitech c920 - 1080p USB webcams, capable in theory of doing internal mp4, but no one got this working.
Canon XH-A1 HDV camcorder - does 1080i50 but can also output 1080p25 - what Sony FX1/Z1 cant do.

As Canon is using FireWire, and C920s USB, in theory we were limited to about 5 meters from our broadcasting PC. This would limit camera locations to 5 meters radius, so it was far from the best solution for camera locations.

Now, how cameras were connected:
I used gigabit Ethernet for all connections. But specific features of those cameras required some workarounds:
XH-A1
As Canon outputs encoded HDV stream (mpeg2-ts, I have access to Sony Z1E too, same thing applies), it's impossible to capture it directly to at least "old" OBS. But VLC can play feed directly from camera, so Video Source plugin was a solution here.
Camera was connected via FireWire to my notebook (Thinkpad W700). Then, via VLC it was streamed using RTP/TS protocol (without re-encoding, as RTP/TS uses mpeg2-ts anyway) to broadcasting PC.

C920
There I wasn't lucky with VLC. I wasn't able to find working protocol that would work without re-encoding from mjpeg or yuv422 (only working modes available on c920s). One of my friend proposed to use USB/IP, and this crazy idea really worked well.
I used virtualhere - client on Windows and two "demo/free" servers on notebooks with cameras connected. We tried to use Raspberry Pi model B for this purpose, but it was too slow. On the other hand, old Thinkpad T61 was more than enough for this solution.

Audio
Another problem was with sound that we got on hall. Main mixer was located behind projection screen (on front of hall), our broadcasting PC in room on the back of the hall. As Video Source plugin can output audio, I connected recording output from mixer to XH-A1 via XLR jacks

Sync video and audio
C920s, even using USB/IP had almost no delay. But HDV cameras have "by design" about 2s delay on output + buffer on streaming VLC + buffer on Video Source plugin. For syncing, I headed all three cameras (added into one OBS scene) onto some stopwatch app displayed on smartphone, did screenshot and compared time differences between sources. Then adjusted buffers on each source (in practice, it was 2600ms for both c920). As audio was delivered through XH-A1, it was already in sync.

Slides
Sadly, I don't have any VGA/HDMI grabber, so we just asked our guests to share their slides with us, and opened them on second screen (captured by OBS). I forgot to disable cursor capture from monitor, but that was a minor problem.

Management
What I realized in previous streams, Scenes are not good for things like conferences, when you need to display eg. title bar for each talk. We had to create scene for each title, and as long as title was displayed, it was impossible to switch cameras.

Instead, we decided to go "Trust me..." way.
There's CLR Browser Source plugin that implements Webkit as video source. I made simple webpage with no background that is able to get commands through json api, and render title bars, animated logo and some slideshows (used in breaks between talks). With my friend we created simple app that was able to create list of titles, select current talk, send json commands to display title bars and slideshows. App is called Konferansjer (Polish term for person that announces talks) and additionally has buttons to control cameras.

How it was implemented in OBS?
5 global sources: 3 cameras, second screen (for slides), CLR Browser for overlays
We got 4 scenes: Three for each camera containing overlay and single camera, fourth for current slides.
OBS was controlled through our app - we added additional buttons for selecting current "camera" (scene) by just sending global hotkeys... and to be sure it will not interfere with other apps we used keycodes of F13-F16 keys (as Windows can map up to F24). Simple solution, but it works.

This is how current version of Konferansjer looks (sorry for Polish, on left there's list of talks, first row of buttons controls our overlays, second scenes/cameras)
N2vQrY9.png


and the final result you can see on, for example, talk given on Saturday by Klaus Knopper:

As we have another conference next month (called DrupalCamp), we're going to improve how Konferansjer works and release it to public, as it seems very useful.

Problems?
The only problem we had during two days of conference was when someone accidentally disconnected our broadcasting computer from Ethernet. After that we quickly started recording on XH-A1 while fixing whole disaster - I had to reboot both USB/IP servers, restart OBS (as C920s was "disconnected" because of USB/IP), that took us about 7 minutes.
But as "missing" part was recorded on camera, I was able later (keeping whole setup from live stream) switch camera to playback mode and replay "lost" part of talk while recording it in OBS (to the same file format as all other talks), and then concat files using ffmpeg. Rest of recordings were cut lossless (-ss -t -c copy; also using ffmpeg) into single talks, and in less than 24 hours available on Youtube as playlist.
 
Last edited:

Duobix

New Member
I participated in development of this tool. We hope to deliver version 9000.01 with a support of English language.
We are planning on a public release of this software-just when we're confident that a debugger running underneath is not a must (this "Sesja Linuksowa 12" conference was a giant stability test for Konferancjer-It's a pleasure to mention it passed the test) AND that the program is chimpanzee-user-level friendly.
 

kitor

New Member
Sorry for not replying for so long. After that conference, we did live transmission 'from field' with having 3 cameras connected through LTE network, and then finals were close - so there's not much progress.

For now we fixed all bugs that crashed program, and found that emulating hotkeys is far unreliable method, that fails to often. There's also some development needed due to how overlays are generated (we currently need external local http server, that's going to be integrated in plugin).

As OBS-MP seems to be very far in implementation, we're going to switch our efforts to support it instead of old OBS. There's even an idea to integrate it with new OBS, but that was not yet researched enough.
 

Harold

Active Member
http://www.monoprice.com/Product?c_id=103&cp_id=10303&cs_id=1030312&p_id=7644&seq=1&format=2 gives you quite a bit more reach on your cameras. I use them in my mobile webcasting kit (That I use for remembrance day ceremonies locally in addition to other events, both indoors and out, where I need to be away from the cameras to not be intrusive into the event) as well as at a local funeral home for webcasting their services. If you do go that route, the c920s do NOT draw enough power to require the power adapter on the extension cable. You only need those adapters if you need more than 82ft of distance. Also, don't try to use usb hubs on the camera channels, they don't have enough bandwidth to run multiple cameras. You will need a set of cables for each camera.

With the funeral home, The computer doing the 'casting is in the back of the chapel next to the behringer x32 producer mixer and the cameras are in the front about 40-50ft away by wire. The remembrance day ceremonies are about the same distance with similar hardware connections, only outdoors and with an x32 rack variant.

All this is probably a little late now for your last conference, but it does give you something for future events if you can get a hold of the extension cables in time.

I'm hoping for a linux version of the browser plugin for multiplatform in order to get my lower thirds sorted.
 

kitor

New Member
About cables - everything was done as cheap as possible, as our budget was limited. Between our broadcasting PC and cameras there was about 80 meters of LAN (we used existing cabling in conference room for that, as each camera was in different location obviously). And for now, we're sure that next edition will be in the same location, so it's time to think about better cameras than C920s :)
(and XH-A1, as it's firewire, had to be streamed via lan anyway)

For that long distance USBoIP seems reasonable, as all you need is old laptop running basic linux distro for virtualhere. Thinkpad x61 was overkill, load was less than 0.1. And as it's Core2Duo, I belive that any laptop from Pentium 3 era with USB 2.0 should work.
On the other hand Raspberry PI was not enough, as it shares it's Ethernet on USB hub - load was more than 2, and obviously it wasn't running smooth.
 
Last edited:
Top