Project

General

Profile

Task #8675 » pres.html

Philipp (double-p) Buehler, 12/06/2020 10:31 AM

 
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta charset="utf-8">
<style>
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);

body { font-family: 'Droid Serif'; }
h1, h2, h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
}
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
</style>
</head>
<body>
<textarea id="source">

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 :)
]

</textarea>
<script src="https://remarkjs.com/downloads/remark-latest.min.js">
</script>
<script>
var slideshow = remark.create();
</script>
</body>
</html>
(2-2/2)