 Hi, this is Yuvi and this is our rambling, what no, poof, nice. How we try to get our current live streaming setup to work directly with YouTube or Ustream so that setting up live streams becomes a lot more easier. And we didn't quite get there but we got a fair bit of way there. So this is a very nice device that captures what the speaker is presenting and the speaker themselves and the audio and mashes them all together into a nice video stream that you can do things with. It even helpfully outputs them in a very standard format called RTSP, which is an IEEE protocol for streaming video and audio through the internet. Is it IED or IEDF? I'm not sure. It's one of the IEEE star protocols for internet. Right. Right. Makes sense. It's an IEDF protocol but that doesn't matter because most of the actual companies that run live streaming on internet use another protocol called RTMP, which was first invented by MacroMedia to sell a lot of flash licenses and is still doing that very reliably. But everyone including YouTube and Ustream live stream, pretty much everyone uses RTMP rather than RTSP and now it is kind of like a standard as well. So what we had to do was have an intermediate server somewhere that essentially took the RTSP and converted into RTMP without too much lag or power consumption or delay. So this sounds reasonably simple but it turned out to be anything but there is a server written in C++ that is supposed to do exactly just this, which is take RTSP, convert to RTMP. And of course that was suffering from the usual problems of many open source projects that have a very specific use case that the founders are really, really good with and finding really, really old blog old like mailing list posts about the exact same problem that you are having but the solution seems to be along the lines of I made a commit today, can you try again? And the other guy says, oh yeah, it works now without any idea of what he did to fix it or why it now works now or what is exact command is. So we spent like an hour or so trying to get that to work. That is what RTMPD I think. Yeah, and that didn't quite end well. In the end we got audio to work but despite being in the same network, the audio was incredibly choppy, right? Like you could like hear like breaks of five seconds between the audio actually coming through and that was with no video whatsoever. And so that was kind of a bit of a dead end. Maybe someone with more patience and maybe someone who can actually read the code in there could beat that into place but that was not me. I've done a lot of work with Gstreamer a few years ago when I was contributing to GNOME and Gstreamer is this piece of software that lets you transform audio and video by passing them through a pipeline. So for example if you wanted to say take a video that is being encoded in H.264 and is 1080p and you want to convert it into say WebM with at say 240p or something like that then you just simply construct a pipeline that says I'm going to take this video from the file I'm going to decode it with the H.264 decoder and then I am going to resize it with this resizer and then I'm going to encode it again with WebM and then I'm going to output to this file. So you construct this pipeline and like let the data flow through it and in the end you have what you want. It's a very very powerful piece of technology for doing this and it is, I mean if you are using audio on Linux most probably you have used it at some point. If you are using video on Linux most probably you have used it at some point and it's also very very easy because you are thinking in terms of blocks from which you construct pipelines and other people are writing the blocks for you. So I started playing around with that and that actually was a fair bit easier because I managed to actually get to a point where I could decode the RTSP stream and actually have it play with not too much delay on a local laptop in the same machine and it should have also been possible to essentially just repackage it. So in the pipeline what you would have is I'm going to take this RTSP thing and then I'm just not going to do anything to the video inside. I'm just going to take the RTSP part out of it and then take the video and audio and put it into RTMP and then just push it off. So this also means you would not have to actually decode and encode the video which is a huge saving because that usually completely fills up the CPU and also is a lot slower than just like manipulate the stream by taking out like the outer layers and adding just new layers in. But at that point I think we ran into some network trouble. It was also a little problematic for me to figure out the exact pipeline of what this is on and then it also turns out that the person who wrote a lot of that code for the actual G-Streamer to work lives in Bangalore as well. So we just figured we should kind of give them the opportunity to work on this problem at some point rather soon and I moved on to work on HTML for the night. That is pretty much it. So what message to Arun? Message to Arun is this looks like a very simple problem for you because I'm pretty sure you know how to construct that pipeline so please do it at some point. Message for other people please don't give money to Adobe. Please don't let them do their stupid formats on top of you.