Commit Graph

1474 Commits

Author SHA1 Message Date
Anton Georgiev
f3080b9ad1
Merge pull request #14930 from GuiLeme/issue-14819
fix(recording): Override configuration `properties` file
2022-05-10 11:30:48 -04:00
Guilherme Pereira Leme
be6184c9e9
Changes in review
Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2022-05-05 09:53:38 -03:00
Guilherme Leme
d438367e36 [issue-14819] - Changes in review 2022-05-02 16:41:02 -03:00
Guilherme Leme
ab9d4fa9d4 [issue-14819] - implemented features. 2022-05-02 16:04:37 -03:00
Calvin Walton
2d4976cf72 record-and-playback: Don't seek past end of video input
In some cases with incomplete/partially corrupt files, the input video
file can be shorter than the displayed time. If there is a badly timed
cut, this can result in a seek being generated to a point where ffmpeg
is unable to start at.

Add a detection for this situation, and replace with a blank video.
2022-05-02 14:30:32 -04:00
Guilherme Leme
5763595d66 [issue-9789] - Changes in review. 2022-05-02 09:42:00 -03:00
Guilherme Leme
2c3c10115e [issue-9789] - change property showModeratorViewpoint's file 2022-04-29 16:43:24 -03:00
Guilherme Leme
6741232b3f [issue-9789] - Included the option to show the moderator's view. 2022-04-29 16:06:14 -03:00
Guilherme Leme
fe9585a004 [issue-9789] - Refactored webcamsOnlyForModerator to enhance computer processing. 2022-04-29 13:04:43 -03:00
Guilherme Leme
de344dbb81 [issue-9789] - Refactor userInfo List and its logics. 2022-04-29 11:56:26 -03:00
Guilherme Leme
7a513e0f06 [issue-9789] - process EDL differently (recording component) in order to include the webcmasOnlyForModerator property. 2022-04-28 14:58:47 -03:00
Guilherme Leme
a6f9bc6e9a [fix-PR-14628] - Include Return of the props in the read_props method. 2022-04-20 10:00:07 -03:00
Anton Georgiev
dd97ed5b5b
Merge pull request #14628 from GuiLeme/issue-14304
Implementation to read files from `/etc/bigbluebutton/` and override default configs.
2022-04-13 14:20:51 -04:00
Guilherme Leme
0319ecf371 [nokogiri-update] - Update of nokogiri to version 1.13.4+ 2022-04-12 11:07:59 -03:00
Guilherme Leme
021200a800 [Update to nokogiri] - Gemfile.lock 2022-04-05 14:41:03 -03:00
Guilherme Leme
a5601c0c8f [Update to nokogiri] - Change in the Gemfile to run in the new version. 2022-04-05 14:23:17 -03:00
Anton Georgiev
97dbc1aeb6
Merge branch 'v2.5.x-release' into bbb-target 2022-04-01 14:21:15 -04:00
Guilherme Leme
71e1ed8494 [issue-14304] - Resolving merging conflicts 2022-03-31 16:50:34 -03:00
Guilherme Leme
5d6401828c [issue-14304] - Changes in review. 2022-03-31 16:37:46 -03:00
Calvin Walton
97c0f51964 bbb-record-core: Restore systemd unit cwd to 'scripts' dir
The rap scripts might load or run some scripts using relative paths from
the scripts directory, so restore that.

Bundler automatically looks up in parent dirs to find the Gemfile, so
loading gems will work correctly.
2022-03-29 12:57:16 -04:00
Calvin Walton
db2d8efa0d bbb-record-core: Update systemd units to use bundler
Several scripts internally run bundler setup, so no explicit bundler
command is needed. For the others, start up using /usr/bin/bundle
(installed by ruby-bundler) to load the environment.
2022-03-29 12:41:27 -04:00
Daniel Molkentin
dc012a2548 fix(bbb-record-core): make package install again on focal
Now uses Ubuntu's bundler version to install all dependencies at build time
rather than install time. Gems are also now vendored, and no longer pollute the
operating system.
2022-03-23 22:55:04 +01:00
Calvin Walton
6f4a3fdf0b publish/presentation.rb: clean up some assignments in if statements 2022-03-23 09:55:42 -04:00
Daniel Petri Rocha
f9b022c7e4 Don't show slides after meeting ends 2022-03-22 18:02:07 +01:00
Daniel Petri Rocha
8a8a03fab5 Resolve merge conflict; update README 2022-03-22 16:11:44 +01:00
Guilherme Leme
b3320c2414 [issue-14304] - changes in review. 2022-03-21 10:47:01 -03:00
Guilherme Leme
c798eee1f7 [issue-14304] - Implemented reading of /etc/bigbluebutton/recording.yml and /etc/bigbluebutton/presentation.yml 2022-03-18 12:16:27 -03:00
Daniel Molkentin
9a71e8e0b3 make record-and-playback-scripts part of bbb.target 2022-03-17 15:15:21 +01:00
Guilherme Leme
b080e889f6 Merge remote-tracking branch 'upstream/v2.5.x-release' into issue-14243 2022-03-14 16:05:44 -03:00
Ramón Souza
138f4d64e4 Merge remote-tracking branch 'upstream/v2.4.x-release' into v2.5.x-release 2022-02-24 14:49:56 +00:00
Guilherme Leme
55f8d9266e [issue-14243] - Fix to accept the chatEmphasizedText in recording and akka components. 2022-02-22 12:00:36 -03:00
Guilherme Leme
f6e144d71c [issue-14243] - Changes in Akka, to save the events in redis, and changes in rap to process these changes. 2022-02-17 17:23:28 -03:00
Guilherme Leme
58223e416c Removed comments. 2022-02-17 08:24:37 -03:00
Daniel Petri Rocha
a280959f91 Remove comment 2022-01-31 17:09:15 +01:00
Daniel Petri Rocha
e02788545b Merge branch 'bigbluebutton:develop' into faster-publish 2022-01-31 16:29:31 +01:00
Daniel Petri Rocha
b5a52b8e89 Second round of stylistic changes; search for previous shape in DRAW_END 2022-01-31 16:26:22 +01:00
Daniel Petri Rocha
61bc318211
Merge branch 'bigbluebutton:develop' into faster-publish 2022-01-31 16:23:00 +01:00
Guilherme Leme
21e79373f6 Refactored record-and-playback's deploy script to work properly 2022-01-28 11:16:55 -03:00
Ramón Souza
16cd3c4ebb Merge remote-tracking branch 'upstream/v2.4.x-release' into dev-24-0125 2022-01-25 16:56:52 +00:00
Anton Georgiev
5f4c5cdedb
Merge branch 'develop' into r-r-e-acea 2022-01-24 16:05:57 -05:00
Pedro Beschorner Marin
810deb907b refactor(etherpad): access control et al.
Move all Etherpad's access control from Meteor to a separated [Node application](https://github.com/bigbluebutton/bbb-pads).
This new app uses [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
to create groups and manage session tokens for users to access them. Each group
represents one distinct pad at the html5 client.

- Removed locked users' access to pads: replaced readOnly pad's access with a new pad's content sharing routine
- Pad's access is now controlled by [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
- Closed captions edited content now reflects at it's live feedback
- Improved closed caption's dictation mode live feedback
- Moved all Etherpad's API control from Meteor to a separated [app](https://github.com/bigbluebutton/bbb-pads)
- Included access control both in akka-apps and bbb-pads
2022-01-21 16:56:01 -03:00
germanocaumo
74210787ba fix(recording): fix publish crash when poll has no options/answers 2022-01-21 13:23:23 +00:00
Anton Georgiev
e463993d01
Merge pull request #9837 from hiroshisuga/fix-thumbnails
fix(recording): Generate thumbnails from uploaded file
2022-01-20 13:39:38 -05:00
Daniel Petri Rocha
e6476a9b72 Style changes; enable NewCops in Rubocop 2022-01-20 13:57:53 +01:00
Julien Gribonvald
0ea11c9581 fix(recording): not processed screenshare
fix issue #13356
2022-01-18 21:49:28 +00:00
Julien Gribonvald
7a68c002cd
fix(recording): not processed screenshare
fix issue #13356
2022-01-07 12:06:17 +01:00
Fred Dixon
5743b29eba
Merge pull request #11805 from sebastianberm/patch-2
Updated usage section of analytics script to match actual syntax
2022-01-03 16:38:19 -04:00
Daniel Petri Rocha
824274e91c Remove nil checks 2021-12-23 23:39:37 +01:00
Daniel Petri Rocha
39a9a6a791 Shorten with &., ||=, parallel assignments 2021-12-23 13:30:05 +01:00
Daniel Petri Rocha
67900c25b9 Shorten with &., ||=, parallel assignments 2021-12-22 18:28:10 +01:00
Daniel Petri Rocha
1db6894599 Remove translate_timestamp_helper, unused comments 2021-12-22 16:37:37 +01:00
Daniel Petri Rocha
a715ac520b Remove translate_timestamp_helper, unused comments 2021-12-22 16:20:02 +01:00
Daniel Petri Rocha
12dbd093fa Safe navigation operator for polls, ||= for shapes, shapes.dig 2021-12-22 15:12:35 +01:00
Daniel Petri Rocha
5d40c427d5 Flay: refactor sections of similar code 2021-12-20 19:03:30 +01:00
Daniel Petri Rocha
6dd50086fb Reek: remove duplicate method calls 2021-12-19 21:41:52 +01:00
Daniel Petri Rocha
0a2c49543e Linting changes 2021-12-18 20:05:47 +01:00
Daniel Petri Rocha
c1740daa14 Don't look for updates if drawing has already ended 2021-12-18 19:04:20 +01:00
Daniel Petri Rocha
b40bca23e8 cursor.xml, deskshare.xml, panzooms.xml using XML Builder 2021-12-18 19:02:01 +01:00
Daniel Petri Rocha
4328222c82 Merge with fill shape fix 2021-12-16 13:01:26 +01:00
Daniel Petri Rocha
14df8d110a
Bug fix: support recordings with no fill attribute
This script is failing for older recordings with no fill attribute. In that case,`event.at_xpath('fill')` is `nil`, failing once `.text` on `nil` is called.
2021-12-14 17:02:19 +01:00
Anton Georgiev
797fc49633 TEMP 2021-12-09 20:37:05 +00:00
Daniel Petri Rocha
6b0f2e8877 Don't log draw/cursor events as often
+ Shorter syntax for opening and closing files
2021-12-06 19:35:32 +01:00
Daniel Petri Rocha
5aff9c0923 Fasterer: quicker undo, prev_shape 2021-12-06 18:59:10 +01:00
Daniel Petri Rocha
3dcacea379 Optimize XPATH queries 2021-12-06 15:30:34 +01:00
Daniel Petri Rocha
b3601eb8df Performance: << faster than += for strings 2021-12-06 13:58:04 +01:00
Daniel Petri Rocha
e7661f385d Refactor sections of identical code 2021-12-06 12:40:11 +01:00
Daniel Petri Rocha
8901f2a936 snake_case for methods 2021-12-05 20:09:46 +01:00
Daniel Petri Rocha
971aeb9e3d Use instance variables instead of global variables 2021-12-05 19:35:22 +01:00
Daniel Petri Rocha
1d9146a101 Chore: remove useless variables and more
+ Use guard clauses where applicable
+ Use JSON parse over JSON load
+ Rescue StandardError instead of Exception
+ Formatting / Stylistic choices json parse over load
2021-12-05 19:04:21 +01:00
Daniel Petri Rocha
a687ab320d Fix Q_CURVE_TO annotation path 2021-12-05 16:09:26 +01:00
Daniel Petri Rocha
25a10455b3 Linting changes 2021-12-05 15:53:06 +01:00
Daniel Petri Rocha
869f289290 Update README instructions to setup a recording development environment 2021-12-05 15:37:47 +01:00
Felipe Cecagno
b313c7deeb refactor(record-and-playback): replace trollop by optimist 2021-11-23 23:59:59 -03:00
Felipe Cecagno
2a4cc7b62e chore(record-and-playback): update nokogiri from 1.11.0 to 1.12.5 2021-11-23 23:59:07 -03:00
Daniel Petri Rocha
59c3590d3b Use first- and last_event_timestamps
As requested by @kepstin
2021-11-17 16:11:59 +01:00
Daniel Petri Rocha
3cd16ff7a3 XPATH query optimization: replace // 2021-11-16 00:56:16 +01:00
Daniel Petri Rocha
9be8e9b897 Remove temp dir from deskshare and webcam processing 2021-11-16 00:54:58 +01:00
Daniel Petri Rocha
06a9392af0 Prevent unnecessary file copying in presentation recording processing
Uses archived raw files directly instead of copying them over.
Specifies absolute paths in XPATH expressions for faster query speeds

Linting changes:
Removes useless assignments to ext, metadata_with_playback variables
Use frozen string literals
Use YAML safe load and JSON parse over load
Rescue StandardError instead of Exception
2021-11-16 00:11:20 +01:00
Anton Georgiev
019a0b25b9
Merge pull request #13564 from jfsiebel/remove-unused-property-chat-message
Remove unused properties from chat message event
2021-11-02 15:12:56 -04:00
Anton Georgiev
13aba985cb
Merge pull request #10737 from hiroshisuga/fillshape
feat: Fill shape in whiteboard
2021-11-02 15:03:22 -04:00
Joao Siebel
7a118ed3b8 Remove unused properties from chat message event record. close #11696 2021-10-25 14:46:59 -03:00
Calvin Walton
3c1a9cd7c4 RAP: Use "asetpts=N" in ffmpeg audio processing
There's an issue sometimes where when processing the audio from a
desktop sharing file, the STARTPTS value is invalid somehow, and this
results in bad timestamps in the output stream. Depending on the
selected codec/container combination, this might result in errors such
as spam of the message:

Application provided invalid, non monotonically increasing dts to muxer in stream

or simply a hang during processing.

Since we're already using aresample in async mode to correct timestamp
gaps, we can use "asetpts=N" here to simply set the audio frame pts
values to the sample number directly, giving proper monotonic timestamps
with no gaps.
2021-10-21 11:23:09 -04:00
prlanzarin
fbe1610e1c chore(recording): track mediasoup raw media files locations
I was going to resort to some trickery to make mediasoup raw files end up in the
same directory as KMS to reduce changes, but it ended up being too dirty.
I am adding a third directory (/var/mediasoup) to be tracked by the rap scripts
which is where the new raw files end up in.
2021-10-04 17:33:18 +00:00
Calvin Walton
1654f26084 recording: Anonymize names in chat
Move the handling of chat events into the shared library so it can be
used by multiple recording formats.

The anonymization of names is based on the external user id, if
available, so users have a consistent name through the meeting. Note
that no effort is made to edit chat messages - if someone is mentioned
by name in a chat message, that will still be visible.

Default settings for anonymization can be controlled in
bigbluebutton.yml, and per-meeting overrides can be done using meta
parameters on the create call.
2021-09-02 15:02:27 -04:00
Anton Georgiev
4ecb24b4fa Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-aug30 2021-08-30 18:11:16 +00:00
Calvin Walton
93422b5f21 Move ffmpeg '-an' and '-vn' options out of the working format args
Disabling audio or video processing isn't really something that's part
of the working format (and at some point we might want to combine
audio+video processing together).

Move the setting of the '-an' and '-vn' options to where they're
required - as a detail of the EDL processing for video-only and
audio-only components of the output.

Honestly, the main reason for this change is that when testing alternate
working formats, I had accidentally dropped the '-vn' option from the
FFMPEG_WF_ARGS variable without noticing.
2021-08-26 11:20:52 -04:00
Calvin Walton
02d5fe14a6 Don't re-parse the events xml for the has_screenshare_audio check 2021-08-19 10:58:04 -04:00
Mikhail Novosyolov
340b0771e5 Avoid race condition between redis and bbb-rap-resque-worker
Redis must be started before bbb-rap-resque-worker.service which will connect to Redis
2021-08-19 02:37:20 +03:00
germanocaumo
4392b0d462 feat(recording): process published external videos
Generate a external_videos.json file at the recordings with an array of
played external videos url and timestamp.

This file will be published along with the other presentation format files
and can be used to display at the playback.
2021-07-07 13:26:24 +00:00
Pedro Beschorner Marin
93f00196a6 feat(recording): process published polls
Generate a poll JSON file at the recordings with an array of published
polling data:
 - type;
 - question;
 - answers;
 - number of responders; and
 - number of respondents

This file will be published along with the other presentation format files
and can be used to display the poll results at the playback.
2021-06-17 18:46:03 -03:00
Pedro Beschorner Marin
41daeca1a2 refactor(recording): callback url getter 2021-05-29 16:52:07 -03:00
Pedro Beschorner Marin
63dca7506e fix(recording): recording ready callback
Fetch for server's security salt at etc's bbb-web properties file.
2021-05-29 16:51:56 -03:00
hiroshisuga
e0a78ffbac
Merge branch 'develop' into fillshape 2021-05-14 20:57:16 +09:00
Pedro Beschorner Marin
3b83bddd86 feat(events): store etherpad events file 2021-05-04 13:06:12 -03:00
Pedro Beschorner Marin
83b48d5ee8 fix(events): keep events using resque workflow 2021-05-04 13:01:32 -03:00
Calvin Walton
9f5832a5d3 Recording: bbb-record --rebuild restarts processing at the sanity step
Previously, bbb-record --rebuild was restarting recording processing
from scratch by creating the .../recording/<meeting_id>.done file. This
causes the recording to be reprocessed starting at the archive step.
However, re-running the archive step for an existing meeting is not
really supported! Ever since the segmented recording code was added, it
shouldn't /corrupt/ the recording files, but it's still not good.

And as a side-effect, re-running the archive step will re-create the
.norecord file for meetings without recording marks, meaning that you
cannot use bbb-record --rebuild to force a recording without marks to be
processed.

Switch bbb-record to restart recording processing at the sanity stage to
match the BBB 2.2 behaviour. Rather than have it insert tasks directly
into resque via redis-cli, it goes through a ruby wrapper that performs
input validation and uses the resque apis.
2021-04-29 11:10:32 -04:00
Calvin Walton
8098b6b3ad Recording: Halt processing after archive step for non-recorded meetings
In the case where a meeting had recording enabled (record=true on create
call) but the presenter did not start recording during the meeting,
recording processing needs to be stopped after the meeting data is
archived, but before the recording formats are processed.

In the current 2.3 code, processing is halted after the "sanity" step.
However, the 2.2 code stopped processing after the "archive" step
instead. The main difference is that the scripts in the "post_archive"
directory (which are actually post_sanity scripts) did not get run on
non-recorded meetings for 2.2. This behaviour should be preserved for
compatibility.

I have added a special exception to trigger halting processing for a
recording job without causing the entire resque job to be marked as
failed. It only causes the `schedule_next_step` method to be skipped, so
following jobs won't get automatically run. This fixes #11877
2021-04-28 15:53:20 -04:00
Calvin Walton
9e7cecb033 Split the EDL recording marks generation out to a helper function
This function is useful any place you want the matched recording marks
with timestamps rebased so 0 is the start of the meeting, I've used it
for chat analysis, for example.

There is no functional change here, it only exposes the extra function
for recording scripts or dropin/post scripts to use.
2021-04-14 13:40:01 -04:00
Sebastian Berm
90f65edef1
Updated usage
Updated usage as this was still copypasted from the other file (post_events.rb), while this is technically not correct.
2021-03-30 14:15:56 +02:00
Richard Alam
55a416050c - store status when recording has no start/stop marks 2021-03-26 13:39:27 -07:00