GithubHelp home page GithubHelp logo

kastldratza / zoomrec Goto Github PK

View Code? Open in Web Editor NEW
251.0 4.0 63.0 30.71 MB

Record Zoom meetings automatically in headless docker container with Python and FFmpeg

License: MIT License

Dockerfile 9.16% Shell 5.94% Python 84.90%
zoom recording docker python3 ubuntu headless vnc xfce zoomrecorder zoom-recorder

zoomrec's Introduction

Hi there ๐Ÿ‘‹

I'm a computer science student from bavaria ๐Ÿป who loves simplifying life with automation ๐Ÿค–.

  • ๐Ÿ“ซ kastldratza(at)protonmail.com

Support

Feel free. However, if you want to support me and my work, I have some crypto addresses here.

name address
Bitcoin (BTC)
show


bc1qz2n26d4gq8qjdge9ueeluqut5p0rmv5wjmvnus

Ethereum (ETH)
show


0x984dBf7fb4ab489E33ca004552259484041AeF88

zoomrec's People

Contributors

bakkerrs avatar g-fuchter avatar kastldratza avatar snyk-bot avatar toaster1032 avatar v1nc avatar

Stargazers

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

zoomrec's Issues

Hardware Transcoding

Is your feature request related to a problem? Please describe.
Its not a real problem but the files are huge

Describe the solution you'd like
since using ffmpeg i would like a general vaapi transcoding feature

Describe alternatives you've considered
At the moment i am post processing the video files

Additional context
Add any other context or screenshots about the feature request here.

Zoom chat window popup over everything throughout the video

Describe the bug
The chat window of the zoom meeting is displayed in the middle of the screen and occupies almost the whole screen for the whole duration of the zoomrec, making it impossible to view the actual content (shared screen or video). The zoomrec code does NOT attempt to close this pop-up window.

To Reproduce
Steps to reproduce the behavior:

  1. Put 2+ minutes after zoom meeting as starting time in meetings.csv (this was attempted as a way to "play it safe" to avoid the bug happening - it happened always when joining from the start)
  2. View recording
  3. See error

Expected behavior
The zoomrec code (e.g. for mouse simulation) should at least attempt to close any pop-up window during the whole duration of the meeting (e.g. chat window pops up at minute 5, zoomrec closes it)

  • OS: Debian 10 (ofc running the latest docker image)

Additional context

  1. I believe this happens when someone joins the meeting or sends a message in the chat after zoomrec joins the meeting, causing the chat window to pop up.
  2. I don't know if this problem is dependent on my display setup e.g. resolution, number of displays (don't know if docker sees that, but it shouldn't). I have 2 displays (1 landscape, 1 portrait), but the issue persisted even when I unplugged my portrait monitor.

Screenshots
Before Error
After error

How to start the container ?

I have created the container but I can't modify the meetings.csv because it's not a file but a directory
So I remove it and create a new csv file but it still doesn't work

I have this error :

Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/home/ubuntu/meetings.csv" to rootfs at "/home/zoomrec/meetings.csv" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

For start the container I have done :
docker run -d --restart unless-stopped
-e TZ=Europe/Paris
-v $(pwd)/recordings:/home/zoomrec/recordings
-v $(pwd)/meetings.csv:/home/zoomrec/meetings.csv:ro
-p 5901:5901
kastldratza/zoomrec:latest

Explain How To Run

I'm not very knowledgeable about Docker and Python.
Can you share a video or resource where you explain how to run the bot?

Viewing the zoomrec bot in VNC

Describe the bug
I am not sure why but I am not able to view the video stream of the zoomrec bot through a VNC viewer.

Steps to reproduce the behavior:

  1. Run a container with the lastest image: https://hub.docker.com/r/kastldratza/zoomrec using this command:
    docker run -d --restart unless-stopped -e DEBUG=True --name kastlszoomrec -v "$(pwd)/recordings:/home/zoomrec/recordings" -v "$(pwd)/example/audio:/home/zoomrec/audio" -v "$(pwd)/data/meetings.csv:/home/zoomrec/meetings.csv:ro" -p 5901:5901 --security-opt seccomp:unconfined kastldratza/zoomrec
  2. Use a VNC viewer e.g Real VNC to open ip 172.17.0.2:5901
  3. VNC viewer times out due to no response.

Expected behavior
VNC viewer opens a view port to the zoomrec bot in action.

Screenshots
If applicable, add screenshots to help explain your problem.
image

image

Desktop (please complete the following information):

  • OS: Windows 11 with WSL2
  • Browser: Chrome

Please let me know if I am making a simple mistake somewhere. I haven't used VNC too much before so its possible I'm making a foolish mistake.

Start/End record with Restful API

First of all, I would like to thank everyone who came up with the Bot record Zoom solution
It would be great, if possible START/END record via Restful API instead of timer with CSV file like now.

Allow specific date to be set instead of a "weekday"

Is your feature request related to a problem? Please describe.
I'd like to put specific dates for meetings in the CSV file, instead of having to put in a weekday, so that I can use zoomrec to record one-off Zoom meetings.

Describe the solution you'd like
The addition of a date column, and perhaps a weekly/regular boolean column to allow the toggle of regularly joining the same meeting or not.

Record simultaneous meetings with multiple zoomrec bots

Is your feature request related to a problem? Please describe.
Adding support for multi container zoomrec

Describe the solution you'd like
Adding meetings that run simultaneously to the csv file will spawn two containers that can independently join meetings

Describe alternatives you've considered
I've considered opening two instances of zoomrec but unfortunately there are issues with scaling

Feature wishlist

  1. This works on AWS using terraform using docker
  2. Play Recording audio at the start of joining a call
  3. Join a conference recording automatically by looking up a calendar for the meeting - Google Calendar - see scheduler.py https://github.com/andycasey/zoomerang
  4. Add support to record Google Meet, MS Teams, Cisco WebEx calls too.
  5. Benchmark for how many of these docker instances can be run on one standard AWS machine type? Basically if one wanted to record 1000 sessions how can we make that happen?
  6. Ability to monitor recordings sessions in various containers

zoom recording

Can't get it to run :/ any idea what I'm doing wrong

docker logs 95131121d20b -f

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901
E: [pulseaudio] main.c: Daemon startup failed.

Waiting room

When I have to wait for a longer time in the waiting room, the application enters a reconnection loop. It keeps closing zoom, connecting to the waiting room, pause for a few seconds and repeats it. Here is the log:

2021-10-21 11:30:20,922 INFO Added 1 meetings to schedule.
2021-10-21 11:30:20,924 INFO Join meeting that is currently running..
2021-10-21 11:30:20,924 INFO Join meeting: logik
2021-10-21 11:30:20,928 INFO Starting zoom with url
2021-10-21 11:30:20,933 INFO No Running Zoom Process found!
2021-10-21 11:30:22,110 INFO Zoom not ready yet!
2021-10-21 11:30:23,265 INFO Zoom not ready yet!
2021-10-21 11:30:24,398 INFO Zoom started!
2021-10-21 11:30:26,400 INFO Join a meeting by URL..
2021-10-21 11:30:37,705 INFO Please wait, the meeting host will let you in soon..
2021-10-21 11:31:35,494 INFO Maybe no longer in the waiting room..
2021-10-21 11:31:37,633 INFO Maybe no longer in the waiting room..
2021-10-21 11:31:37,633 INFO No longer in the waiting room..
2021-10-21 11:31:37,807 INFO Joined meeting..
2021-10-21 11:31:44,129 ERROR Could not join with computer audio!
2021-10-21 11:31:46,577 ERROR Could not join audio!
2021-10-21 11:31:46,578 INFO Exit!
2021-10-21 11:31:48,580 INFO Join meeting: logik
2021-10-21 11:31:48,584 INFO Starting zoom with url
2021-10-21 11:31:48,594 INFO No Running Zoom Process found!
2021-10-21 11:31:49,732 INFO Zoom not ready yet!
2021-10-21 11:31:50,873 INFO Zoom started!

Using Telegram Bot to remotely start a join/recording

Hey there,

Sometimes, our university uses Zoom calls to repeat "important topics" (questions) for our upcoming exams. This causes everyone to send messages to their colleagues and rushing to their computers.

I would love to just send a telegram message so that the bot joins this meeting and records it. Maybe, an option to store meetingId-passcode-combinations and giving it a nickname (math1...) could help with this.

I love your project :D

Kind regards,
Max

Customize what exactly to record during a meeting

Sometimes I need to record not only the speaker's shared screen but also

  • the speaker's webcam (e.g. if they're writing something on a physical whiteboard, in addition to slides)
  • the chatroom

This could be specified in a separate field of the `meeting.csv, with letter-based options. Examples:

S โ€“ record just the screen
SW โ€“ record screen and webcam
WC โ€“ record webcam and chat

I think it'd be possible to implement using additional instructions to pyautogui

Additional click needed to accept ToS (fix inside)

Before ultimately joining, Zoom today asked me to accept their ToS in a separate window.
I added crude handling for this in my fork in 2cd2a41.
Since I had no time to test how well this plays together with waiting rooms etc., I did not create a PR yet.

Error code 5003

Describe the bug
Zoomrec cannot connect to an arbitrary meeting. After joining by ID, the instance keeps connecting finally fails with Error 5003.

EDIT: Sorry, this turned out to be an firewall issue; the process com.docker.vpnkit.exe was blocked. The issue can be marked as solved now.

To Reproduce
Steps to reproduce the behavior:

  1. Install Windows 10, Version 21H1
  2. Install Docker Version 4.13.0
  3. Install Image from ghcr.io/kastldratza/zoomrec:master
  4. Configure container with Windows / PowerShell instructions (albeit with ` instead of \ for linebreaks)

SESSION_MANAGER environment variable not defined

When I try to start the container I get the following error:

VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

tested on Debian GNU/Linux 10 (buster)

Browser based zoom (for arm)

I was trying to run this project on a raspberry pi 4 but the problem is that zoom doesn't offer an arm client.
While I did not know this project, I started building something similar (https://github.com/aykborstelmann/zoom-recorder), but using the zoom browser client.
If there is interest for this, I can try integrating this and by that offer an arm (and all other now currently supported platforms) solution for recording zoom meetings.

P.S. I really like this project, excellent job!

Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

Hi,

I tried to run the docker container and record a zoom meeting following the instructions from the repo, but it didnt worked. The dcoker logs show the following:

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

How can I fix that?

Best

Python logs out to Docker container

Hey there, firstly thanks for the great container!
I'm having some troubles with getting useful output from the python script out to my calls to docker logs.

In my output I get the logs from the entrypoint file and then an error which I believe comes from the xfce4-terminal call?

Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

After this I'm not able to see any of the python output, is this because its running inside of the separate terminal? Do you know of anyway to pipe the output from python out to stdout on the container?

Zoom crashing on startup.

Hey guys,

Tried to run the project on Macbook M1 16GB...

The first time nothing happen the script freeze after the
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined error.

I've logged manually to the container and tried to run zoom I received
error while loading shared libraries: libnss3.so
so I've added
RUN apt-get update
RUN apt-get install -y libnss3
to the Dockerfile, it fixed the previous error and it starting printing on loop (5min+)
INFO Zoom not ready yet!

logged to the container again try to run zoom again and received
zoom was exited due to a handled signal: 5
and the zoom client closed.

any ideas?

Edit:
I'm running all the docker commands with --platform linux/amd64 as M1 is ARM based.

Cannot start Docker Container: SESSION_MANAGER environment variable not defined

First of all, I would like to thank everyone who came up with the Bot record Zoom solution
I'm trying to run the docker image version on docker hub and got this error, hope to get some feedback and help.

OS: MacOS
Docker: Docker version 20.10.22, build 3a2c30b

Start script:

docker run
-e TZ=Asia/Ho_Chi_Minh
-v $(pwd)/recordings:/home/zoomrec/recordings
-v $(pwd)/example/audio:/home/zoomrec/audio
-v $(pwd)/example/meetings.csv:/home/zoomrec/meetings.csv:ro
-p 5901:5901
--security-opt seccomp:unconfined
kastldratza/zoomrec:latest

Container Log

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

Record=false -> Zoomrec still joins zoom meeting (e.g. for attendance purposes)

Is your feature request related to a problem? Please describe.
Problem: when just needed for attendance, setting the record=False attribute in meetings.csv doesn't join the zoom meeting.

Describe the solution you'd like
Setting record=False for a particular meeting should still join the zoom meeting for that meeting at the designated days/times

Describe alternatives you've considered
Maybe another attribute to delete the video once completed? Although I think this is redundant, we want to save compute speed and the fans from running loud.

Zoomrec stuck in a loop, won't input passcode

Bug

I tried running Zoomrec twice following the instructions in the Readme.md, first I tried running it from a VM in linode, and then from my personal machine. Both times it didn't work but while testing it in my personal machine, I was able to inspect what the container was doing using a VNC client and took the following screenshot:

image

After the screenshot was taken, the "Could not join with computer audio!" error is logged and the whole process starts again. The script won't input the passcode/password detailed in the meetings.cvs file, nor click on the "join" button. The mouse simply stays still for a while until the audio related error is logged, and then it moves sideways. After that it closes zoom and opens it again.

SESSION_MANAGER environment variable not defined

Describe the bug
The container is starting over and over, produces this log output:

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.12
VNC_PORT = 5901

Connect to 172.17.0.12:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

To Reproduce
Steps to reproduce the behavior:

  1. Install as instructed
  2. Start container

Expected behavior
Container starts and keeps on running

Desktop (please complete the following information):

  • Docker Standalone 20.10.3 on Linux
  • Chrome
  • Version 123

Enabling Custom Live Streaming to Youtube / Co-host assignment

I have a regular meeting that I would like to schedule with zoomrec for Custom Live Streaming to Youtube. I have all the streaming parameters setup in the Zoom Meetings configuration settings. It will be great if this can scripted, since this Custom Live Stream feature is not available on Android client.

Also if there is a feature for automatically assign specified users as Co-Hosts, it would make our lives much simpler !

issue with meeting where host has enabled recording

for meeting with recording, It requires accepting a prompt on the dialog and connecting to the meeting with computer audio (a prompt). I had to do it manual using vnc viewer

Describe the solution you'd like

A automated method to record meetings (esp. one in a different timezone) that accepts those dialogs

Failed to connect to the session manager: Could not open network socket

Describe the bug
Container crashes after throwing errors... See below

To Reproduce
Steps to reproduce the behavior:

  1. Follow the Doker documentation to install Docker
  2. Follow the zoomrec documentation to install zoomrec image and run container
  3. After getting error #58 and applying fix #61 observe new errors...

Expected behavior
For the container to run as expected and for me to be able to connect to it using VNC

Desktop (please complete the following information):

  • OS: Ubuntu 22.04.3, fresh install

Errors

2023-10-22 13:32:34
2023-10-22 13:32:34 DISPLAY = :1
2023-10-22 13:32:34 VNC_COL_DEPTH = 24
2023-10-22 13:32:34 VNC_RESOLUTION = 1024x576
2023-10-22 13:32:34 VNC_IP = 172.17.0.2
2023-10-22 13:32:34 VNC_PORT = 5901
2023-10-22 13:32:37
2023-10-22 13:32:37 Connect to 172.17.0.2:5901
2023-10-22 13:32:38
2023-10-22 13:32:38 Start script..
2023-10-22 13:32:38 _IceTransSocketUNIXConnect: Cannot connect to non-local host 0415fd0cea85:@/tmp/.ICE-unix/40
2023-10-22 13:32:38 local/0415fd0cea85
2023-10-22 13:32:38 _IceTransSocketUNIXConnect: Cannot connect to non-local host 0415fd0cea85:@/tmp/.ICE-unix/40
2023-10-22 13:32:38 unix/0415fd0cea85
2023-10-22 13:32:38 Failed to connect to session manager: Failed to connect to the session manager: Could not open network socket
2023-10-22 13:32:45 _IceTransSocketUNIXConnect: Cannot connect to non-local host 0415fd0cea85:@/tmp/.ICE-unix/40
2023-10-22 13:32:45 local/0415fd0cea85
2023-10-22 13:32:45 _IceTransSocketUNIXConnect: Cannot connect to non-local host 0415fd0cea85:@/tmp/.ICE-unix/40
2023-10-22 13:32:45 unix/0415fd0cea85
2023-10-22 13:32:45 Failed to connect to session manager: Failed to connect to the session manager: Could not open network socket

CPU consumption - fitting the right machine

Hey,

I'm running the zoomrec bot on an ec2 image t3.medium which includes 2vCPU and 4GB RAM.

While recording I have really high CPU consumption going up to 90% of the machine capacity.

Does anyone maybe have a good benchmark or knowledge of what machine would be best to run this kind of bot?

Thanks.

Unable to join Meeting: Does not find "Join a Meeting" button

Describe the bug
No matter how long I wait, I am unable to join a meeting. Zoom Window opens but Pyautogui is unable to detect the "Join a Meeting" button.

To Reproduce
Steps to reproduce the behavior:

  1. Modify the given docker file by adding: apt-get install --no-install-recommends -y gnome-screenshot && \ to install gnome-screenshot for recent versions of PIL >= 9.2.0
  2. In the requirements.txt file, change pillow>=8. 1.0 to pillow>=9.2.0
  3. In join_meeting_id(meet_id) function add a minimum search time for pyautogui locateCenterOnScreen: pyautogui.locateCenterOnScreen(os.path.join(IMG_PATH, img_name), minSearchTime=2, confidence=0.9)
  4. Build an image with the new changes
  5. Run the container with docker run -d --restart unless-stopped \ -e DEBUG=True \ -v $(pwd)/recordings:/home/zoomrec/recordings \ -v $(pwd)/example/audio:/home/zoomrec/audio \ -v $(pwd)/example/meetings.csv:/home/zoomrec/meetings.csv:ro \ -p 5901:5901 \ --security-opt seccomp:unconfined \ <IMAGE_NAME>

Expected behavior
Expect zoom window to open and the "Join a Meeting" button to be clicked

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10 Education with WSL

ERROR: SESSION_MANAGER environment variable not defined

Describe the bug
I downloaded ghcr.io/kastldratza/zoomrec and I am trying to run it under MacOS 10.15.7 (Catalina).

I created the parts mentioned in "Preparation":
mkdir -p recordings/screenshots
chown -R 1000:1000 recordings

mkdir -p audio
chown -R 1000:1000 audio

Command used to run it:
docker run -v $(pwd)/recordings:/home/zoomrec/recordings
-v $(pwd)/example/audio:/home/zoomrec/audio
-v $(pwd)/example/meetings.csv:/home/zoomrec/meetings.csv:ro
-p 8081:8081 --security-opt seccomp:unconfined kastldratza/zoomrec

I removed the "-d --restart unless-stopped" bit in order to be able to see an error message. It was a pain to stop docker from restarting this container and finally get rid of it.

The output I am then getting is:

Mac:zoomrec User$ docker run -v $(pwd)/recordings:/home/zoomrec/recordings
-v $(pwd)/example/audio:/home/zoomrec/audio
-v $(pwd)/example/meetings.csv:/home/zoomrec/meetings.csv:ro
-p 8081:8081 --security-opt seccomp:unconfined kastldratza/zoomrec

DISPLAY = :1
VNC_COL_DEPTH = 24
VNC_RESOLUTION = 1024x576
VNC_IP = 172.17.0.2
VNC_PORT = 5901

Connect to 172.17.0.2:5901

Start script..
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment
variable not defined

To Reproduce

  1. Download the image through docker hub: https://hub.docker.com/r/kastldratza/zoomrec
  2. Complete "preparations" section
  3. Run docker command above
  4. See error

Expected behavior
I expect to be able to login through VNC and launch and configure zoom.

Screenshots
N/A see console output above.

Desktop (please complete the following information):

  • OS: MacOS 10.15.7 (Catalina)
  • Docker 4.7.1 (77678)

Enable recording webinars

In webinars there are some different behaviors of zoom, such as entering email address when entering the call, and then some of the screens are a bit different causing zoomrec to be stuck on "zoom is not ready yet". Enabling configuring a call as a webinar and then handling the differences will be a great addition.

Stops audio recording after a few seconds

Unfortunately the audio recording of the video stops after 5-10 seconds of recording. Tested it multiple times, but can not get it working. The problem occurs no matter what the debug flag is set to. Also tested it with the default screen size of 1024x576.
System: Ubuntu 20.04.2.
Docker version: 19.03.8

My docker-compose setup is the following:

version: "3.5"
services:
  app:
    image: zoomrec:latest
    container_name: zoomrec
    build: .
    restart: unless-stopped
    environment:
      - TZ=Europe/Berlin
      - VNC_PW=test1234
      - VNC_RESOLUTION=1920x1080
      # in order to debug better
      # - DEBUG=True
    volumes:
      - ./recordings:/home/zoomrec/recordings
      - ./example/meetings.csv:/home/zoomrec/meetings.csv:ro
    ports:
      - 5901:5901

Please consider moving CSV file in it's own directory

Is your feature request related to a problem? Please describe.
Since the CSV file is currently located directly in the users home dir, it's impossible to store it in a volume, forcing the user to use bind mounts.

Describe the solution you'd like
Move the CSV file to something like $HOME/meetings/meetings.csv so one can simply mount a volume to $HOME/meetings

Describe alternatives you've considered
Make path of CSV file configurable by environment variable.

Replace Zoom Launch with xdg-open

Currently, zoomrec attempts to use a new zoom instance to input the meeting id, passcode, and name. An easier alternative would be to execute the command:

xdg-open "--url=zoommtg://zoom.us/join?action=join&confno=$id&pwd=$pwd&uname=$name"

which should automatically launch a zoom meeting with the right information without it being manually inputed by the script.

This means you do not have to recode the script if the UI for inputting the meeting id, passcode, or name changes drastically.

You also do not need to code seperate mechanisms for each different method of joining a meeting, as only xdg-open will be required.

More control options from the url scheme.

On a personal note, I use a modified docker container with firefox installed to manually sign in since the zoom meetings I attend requires an aunthenticated google account, and there appears to be no way to manually sign in via Google unless with a web browser. Unfortunately it is not possible to record any zoom meeting with any existing account since the current script requires any existing zoom instances to be killed, potentionally signing my account out in the process.

Implementing this change should allow users to join with an existing account that is already signed in, since no zoom process will need to be killed. If users are given the choice to manually sign in to record their meetings with their account, no action is required from the developers part to securecly authenticate the accounts since that would already be handled by the user.

Zoom needs update breaks zoomrec

Describe the bug
When trying to join a meeting, Zoom displays Update Zoom to continue window, demanding min version 5.13.5 to continue. I tried clicking update but it doesn't work and I don't know which version won't introduce errors to modify the Dockerfile accordingly.

To Reproduce
Steps to reproduce the behavior:

  1. Join VNC
  2. Notice error on log board of zoomrec and possibly an already open Update Zoom window
  3. Try to open zoom manually
  4. Click on 'Join Meeting' and try to join meeting
  5. See Update Zoom Window
  6. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
image
Desktop (please complete the following information):

  • OS: Debian 12
  • Version: Latest zoomrec docker image

Additional context
I was trying to navigate the cdn link but I couldn't find a version of 5.13.5. I also believe it might be a good idea to download the latest zoom client 5.16.6(382) to lengthen future proofness (given it doesn't introduce errors)

zoomrec login not working anymore

Describe the bug
I tried logging in to a few different accounts, remote and locally but it always fails with the error 1132

To Reproduce
Steps to reproduce the behavior:
Try logging in. If it works for you I'll be happy.
Expected behavior
Login succeeds without error.

Screenshots
CleanShot 2022-04-22 at 11 15 34

Desktop (please complete the following information):

  • OS: MacOS + Docker | Ubuntu + Docker

fails to connect to audio on windows (Docker with WSL backend)

Describe the bug

zoomrec goes into crash loop after failing to connect audio (see screenshot) on windows (Docker with WSL backend)

weekday;time;duration;id;password;description;record
saturday;14:00;120;85140122330;eXVaS01xU09jcnR3aVBXNXVDc3ptZz09;Data Pre-Processing and Data Wrangling;true
docker run -d --restart unless-stopped  -e TZ=Asia/Kolkata -e DEBUG=True -v ${PWD}/recordings:/home/zoomrec/recordings -v ${PWD}/audio:/home/zoomrec/audio -v ${PWD}/meetings.csv:/home/zoomrec/meetings.csv:ro -p 5901:5901 --security-opt seccomp:unconfined kastldratza/zoomrec:latest
2022-11-26 13:43:32 
2022-11-26 13:43:32 DISPLAY = :1
2022-11-26 13:43:32 VNC_COL_DEPTH = 24
2022-11-26 13:43:32 VNC_RESOLUTION = 1024x576
2022-11-26 13:43:32 VNC_IP = 172.17.0.2
2022-11-26 13:43:32 VNC_PORT = 5901
2022-11-26 13:43:35 
2022-11-26 13:43:35 Connect to 172.17.0.2:5901
2022-11-26 13:43:36 
2022-11-26 13:43:36 Start script..
2022-11-26 13:43:41 Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

Screenshots

204080605-21e9aeb8-b9f1-463c-a08e-a852967cb19a

Zoom Client update to >= 5.14.5

Describe the bug
Zoom client is outdated which means no connections to Zoom Servers are possible anymore. This seems to be the case since Jan 2024 due to Zoom lifecycle maintenance.

To Reproduce
Install current master and try to connect to any meeting.

Expected behavior
Normal connection to Zoom Meetings.

Screenshots
Screenshot 2024-03-25 131147

Desktop (please complete the following information):

  • OS: Ubuntu 22.04

Additional
It seems like the "Join a Meeting" button has changed in Zoom Client Version > 5.14.5. It is now "Join a meeting" instead of "Join a Meeting".

Can not run zoom directly in Linux (via VNC)

Describe the bug
Please help me check issue I can not execute zoom GUI directly in Linux (via VNC)

To Reproduce
Steps to reproduce the behavior: (as attached file)
vncviewer_bEDCjNaWQI

Desktop (please complete the following information):
I am using Docker Desktop 4.15.0 (93002) is currently the newest version available.
docker desktop release

Docker Engine

General config

Thanks your support !

Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

Describe the bug
Run it on macOS and see below in logs:
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined

To Reproduce
Steps to reproduce the behavior:

  1. Run brew install --cask docker
  2. Run mkdir -p recordings/screenshots
    chown -R 1000:1000 recordings
    mkdir -p audio
    chown -R 1000:1000 audio
  3. Run docker run -d --restart unless-stopped \ -v $(pwd)/recordings:/home/zoomrec/recordings \ -v $(pwd)/example/audio:/home/zoomrec/audio \ -v $(pwd)/example/meetings.csv:/home/zoomrec/meetings.csv:ro \ -p 5901:5901 \ --security-opt seccomp:unconfined \ kastldratza/zoomrec:latest
  4. See error messages in Docker Desktop Logs

Expected behavior
Running

Screenshots
Screenshot 2023-05-16 at 5 42 13 PM

Desktop (please complete the following information):

  • OS: macOS

Zoomrec is unable to enter email address

Describe the bug
image

If I connect to the VNC, I am able to observe that Meeting ID and Password are entered, but then zoomrec is not able to join the meeting due to the missing email address field.

If I manually enter something, the script closes zoom afterwards.

Video saving but only less than one second

Describe the bug
Video saving but only less than one second.

Expected behavior
Expected to run the full length of the meeting.

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version 22
  • Docker image

Additional context
Any possibility to record audio only?

Q: using zoom's native recording feature

@kastldratza I'm looking into using zoom's native recording feature instead of ffmpeg to record the screen. Before I go down that rabbithole I was curious if you have tried this and IF you did whether you abandoned it in favor of ffmpeg?

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.