|
<!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>
|