class: center, middle # jibri - recording/streaming jitsi meetings --- # Talking points 1. Problem / Architecture 2. Multi-Hosting 3. Implementation 4. Outcome --- layout: false .left-column[ ## Problem / Architecture ] .right-column[ Jitsi can do online video conferencing just fine and is based on several services that interact: - jitsi - web-UI - prosody - internal steering and inline chat - jicofo - service(s) discovery (also with prosody) - videobrige - actual webRTC The missing part is recording/ext. streaming (e.g. YT) - where `jibri` kicks in ] --- layout: false .left-column[ ## Multi-Hosting ] .right-column[ The official documentation is a bit brief on how to distribute jitsi and other components over multiple VMs. Given the resource hunger of components like heavy lifter java, ffmpeg, videobridge and so that's a bummer. Finding out when a "name" is just a label or actually an FQDN/hostname is pretty opaque. Luckily at least one put an eye that multiple servers are a good thing: https://jitsi.org/blog/learn-how-to-live-stream-and-record-on-your-jitsi-meet-install/ ] --- layout: false .left-column[ ## Implementation (ungleich.ch) ] .right-column[ - Existing jitsi-meet @ `talk.ungleich.ch` - new VM for jibri @ `archive.talk.ungleich.ch` - Install pretty much like from https://nerdonthestreet.com/s/15 but full details/deviations in the jibri-install.md at ticket #8675 - main deviation is new config (HOCONF) format - JDK8 no longer needed - `next page` ] --- layout: false .left-column[ ## Implementation (ungleich.ch) ] .right-column[ - jitsi, jicofo, prosody on `talk.ungleich.ch`. - jibri, X, chrome, ffmpeg, nginx on `archive.talk.ungleich.ch` "Workflow": - jibri starts up, connects to prosody-MUC to announce readiness - user/jitsi requests video recording/streaming - jicofo will look in MUC to find available jibri instances - jibri will launch chrome/selenium, joins (hidden) the meeting - ffmpeg will capture the chrome rendering and streams to disk - nginx is available to offer download of the resulting MP4 If above is working, YT-streaming is done by only providing your YT-stream-key -- no further config/setup needed. ] --- layout: false .left-column[ ## Outcome ] .right-column[ - jibri (actually ffmpeg) is very CPU bound but could trigger RAM bound, too, if falling behind - only one recording per jibri instance - streaming is YT only (for now) - does not work - "isJoined: false" - and the docs are poor - until you get the hang, somewhat Oh.. and that was the first non-OpenBSD H4G for me :) ]