Code Monkey home page Code Monkey logo

docker-jibri-pulseaudio's Introduction

Docker Jibri Pulseaudio

Docker Image Version Docker Image Size (latest semver)

Run Jibri using PulseAudio.

Please use prayagsingh/jibri-pulseaudio:latest for latest changes using unstable build.

Additional Features

  • Inbuilt Support for streaming to any rtmp server.

  • Stream to Facebook.

  • Inbuilt support for Rclone.

  • Store your recordings to any S3 compatible storage.

  • Store your recordings to Google Drive.

FILES

  1. Use examples/jibri.yml with docker-compose.
  2. Use examples/stack-jibri.yml with docker stack deploy.
  3. Use examples/jibri-k8s directory to setup jibri on k8s. Use examples/jibri-k8s/kustomization.yaml for deployment. Kustomize version is v4.0.5.
  4. Look for update_this and change the value accordingly. Also change meet.example.com with a valid URL.

NOTE 1: It is mandatory to map /dev/shm else chrome crashes when screen-share is enabled

NOTE 2: Here I'm using external network in both the files. Please change it accordingly.

NOTE 3: Please take the necessary steps to secure the AWS keys when using with rclone.

SETUP tested

  1. docker-compose: working with 1920x1080
  2. docker-swarm: working with 1920x1080
  3. k8s: working with 1280x720 resolution only. With 1920x1080, the memory consumption reached up to 7.5 GiB and vCPU up to 6 and after 10 minutes recording crashed. With resolution 1280x720, recording went fine. Tested in 50 minutes meeting with 3 participants and with/without screen-sharing. In order to lower down the resolution to 1280x720, we have to change Virtual 1920 1080 with Virtual 1280 720 in xorg-video-dummy.conf file and set env variable JIBRI_FFMPEG_RESOLUTION="1280x720".

K8s resource usage with 1280x720 resolution with 3 participants in a meeting: Stable

Screenshot (619)

docker-jibri-pulseaudio's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

docker-jibri-pulseaudio's Issues

Looking for maintainers

Hello everyone, I'm working on building SOCLLY, A Decentralized Social Network powered by Lens protocol and Polygon Blockchain. Since my entire time and energy are going into it hence I couldn't give a proper time to this repo.

It would be great if someone wants to take it up from here and keep it up to date.

Regards,
Prayag Singh

Record video timeout

i have deploy jitsi ans jibri in docker with theses conf.

https://github.com/riderx/lemverse-deploy/tree/main/jitsi

and I got this error

2021-09-29 18:59:55.114 INFO: [54] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2021-09-29 18:59:55.161 INFO: [54] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Writing recording to /config/recordings/ylmhqaiyxwuzbtur, finalize script path /config/finalize.sh
2021-09-29 18:59:55.169 FINE: [54] org.jitsi.jibri.statsd.JibriStatsDClient.log() Incrementing statsd counter: start:recording
2021-09-29 18:59:55.172 INFO: [54] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2021-09-29 18:59:55.173 FINE: [54] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-09-29 18:59:55.174 INFO: [54] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2021-09-29 18:59:55.190 INFO: [54] org.jitsi.jibri.api.xmpp.XmppApi.log() Sending 'pending' response to start IQ
2021-09-29 18:59:55.210 INFO: [66] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Visiting url https://video.indiemakers.space
2021-09-29 19:00:17.019 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-09-29 19:00:55.271 SEVERE: [66] org.jitsi.jibri.selenium.JibriSelenium.log() An error occurred while joining the call
org.openqa.selenium.TimeoutException: timeout: Timed out receiving message from renderer: -0.001
  (Session info: chrome=90.0.4430.212)
  (Driver info: chromedriver=90.0.4430.24 (4c6d850f087da467d926e8eddb76550aed655991-refs/branch-heads/4430@{#429}),platform=Linux 5.4.0-84-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'fc9634165fe4', ip: '172.21.0.6', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-84-generic', java.version: '1.8.0_292'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 90.0.4430.24 (4c6d850f087da..., userDataDir: /tmp/.com.google.Chrome.Pf64Dp}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:34345}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 90.0.4430.212, webStorageEnabled: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
Session ID: f0d98d1a43a4ae68de589c69afe2bf0c
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
        at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
        at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
        at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
        at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
        at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:271)
        at org.jitsi.jibri.selenium.pageobjects.AbstractPageObject.visit(AbstractPageObject.kt:35)
        at org.jitsi.jibri.selenium.JibriSelenium$joinCall$1.run(JibriSelenium.kt:291)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2021-09-29 19:00:55.275 INFO: [66] org.jitsi.jibri.selenium.JibriSelenium.log() Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2021-09-29 19:00:55.283 INFO: [66] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2021-09-29 19:00:55.284 INFO: [66] org.jitsi.jibri.api.xmpp.XmppApi.log() Current service had an error Error: FailedToJoinCall SESSION Failed to join the call, sending error iq <iq to='[email protected]/focus' id='8tLun-56' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='off' failure_reason='error' should_retry='true'/></iq>
2021-09-29 19:00:55.287 FINE: [66] org

Recording start and after 90 sec say it's failing.
I have try many different way and still got issue

Only part of screen on stream

Hey, thanks for this repo.
I tried it on AWS ECS Fargate it seems working but only part of jitsi view was streamed (like only a quarter West corner showing).
So did you facing with this issue?
This is my log starting:
`---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

timestamp message
1620376191549 [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
1620376191582 [s6-init] ensuring user provided files have correct perms...exited 0.
1620376191582 [fix-attrs.d] applying ownership & permissions fixes...
1620376191583 [fix-attrs.d] done.
1620376191584 [cont-init.d] executing container initialization scripts...
1620376191585 [cont-init.d] 01-set-timezone: executing...
1620376191589 [cont-init.d] 01-set-timezone: exited 0.
1620376191589 [cont-init.d] 10-config: executing...
1620376191591 INFO: Setting up container using 10-config script
1620376191597 unix:path=/var/run/dbus/system_bus_socket,guid=aa7d41eed3dbf32a1518efd66094fa7f
1620376191989 [cont-init.d] 10-config: exited 0.
1620376191989 [cont-init.d] done.
1620376191990 [services.d] starting services
1620376192014 _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
1620376192015 X.Org X Server 1.20.4
1620376192015 X Protocol Version 11, Revision 0
1620376192015 Build Operating System: Linux 4.19.0-12-amd64 x86_64 Debian
1620376192015 Current Operating System: Linux ip-172-31-50-49.ec2.internal 4.14.225-168.357.amzn2.x86_64 #1 SMP Mon Mar 15 18:00:02 UTC 2021 x86_64
1620376192016 Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.14.225-168.357.amzn2.x86_64 root=UUID=2521f000-2e7e-4e67-a217-b9bfce6b19d9 ro console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0
1620376192016 Build Date: 01 December 2020 05:59:57PM
1620376192016 xorg-server 2:1.20.4-1+deb10u2 (https://www.debian.org/support)
1620376192016 Current version of pixman: 0.36.0
1620376192016 Before reporting problems, check http://wiki.x.org
1620376192016 to make sure that you have the latest version.
1620376192016 Markers: (--) probed, (**) from config file, (==) default setting,
1620376192016 (++) from command line, (!!) notice, (II) informational,
1620376192016 (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
1620376192016 (++) Log file: "/tmp/xorg.log", Time: Fri May 7 01:29:52 2021
1620376192016 (++) Using config file: "/etc/jitsi/jibri/xorg-video-dummy.conf"
1620376192016 (==) Using system config directory "/usr/share/X11/xorg.conf.d"
1620376192048 Restarting TLS tunnels: /etc/stunnel/stunnel.conf: [services.d] done.
1620376192077 no pid file
1620376192185 /etc/stunnel/stunnel.conf: started
1620376192186 2021.05.07 01:29:52 LOG4[ui]: Service [fb-live] needs authentication to prevent MITM attacks
1620376192340 2021-05-07 01:29:52.340 INFO: [1] org.jitsi.jibri.Main.log() Jibri run with args [--config, /etc/jitsi/jibri/config.json]
1620376192413 2021-05-07 01:29:52.413 INFO: [1] org.jitsi.jibri.Main.log() Checking legacy config file /etc/jitsi/jibri/config.json
1620376192413 2021-05-07 01:29:52.413 INFO: [1] org.jitsi.jibri.Main.log() Legacy config file /etc/jitsi/jibri/config.json doesn't exist
1620376192744 2021-05-07 01:29:52.744 INFO: [1] org.jitsi.jibri.Main.log() Jibri starting up with id jibri-instance-974394661
1620376193146 2021-05-07 01:29:53.146 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() got jwtConfig: {}
1620376193147 2021-05-07 01:29:53.147 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: reference.conf @ jar:file:/opt/jitsi/jibri/jibri.jar!/reference.conf: 59: No configuration setting found for key 'signing-key-path'
1620376193302 2021-05-07 01:29:53.302 INFO: [1] org.jitsi.jibri.Main.log() Using port 3333 for internal HTTP API
1620376193307 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
1620376193307 SLF4J: Defaulting to no-operation (NOP) logger implementation
1620376193308 SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
1620376193312 2021-05-07 01:29:53.312 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
1620376193552 2021-05-07 01:29:53.552 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections `

changelog

Hi
Can you provide a changelog ?
what are the differences between the 1.4 and the 1.5 that you claim is "unstable"?

thanks for your awesome repo!

Dockerfile cleanup

Is it possible to move the Rclone and Stunnel installation from Dockerfile to 10-config and use env variables to configure them? Like only start the Rclone or Stunnel installation process when the env variables are set to 1.

Need to discuss the pros and cons of doing this. Please feel free to share the thoughts on this.

Run it with non-root user?

Right now it uses root access for setting up some configuration. As of now, we set up the basic config using root user and then switch to jibri user.
Jibri uses S6-Overlay for managing the configuration which requires root access but with Version 2.X.X we can run it with a non-root user. So the first step would be to switch to version 2.x.x.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.