Commit Graph

1323 Commits

Author SHA1 Message Date
Richard Alam
55a416050c - store status when recording has no start/stop marks 2021-03-26 13:39:27 -07:00
Richard Alam
77b105aea2 Track recording process status
- store recording process status into a redis list. This option
   needs to be enabled in bigbluebutton.yml
2021-03-25 12:25:30 -07:00
Richard Alam
54f4d43bea Merge branch 'develop' of github.com:bigbluebutton/bigbluebutton into keep-recording-status-files 2021-03-25 12:14:36 -07:00
germanocaumo
951700502d Recording: Ignore video in audio processing scripts (fix error with screenshare input) 2021-03-25 16:30:32 +00:00
Calvin Walton
331c63adec Don't print audio info for corrupt audio files
Fixes a crash: undefined method `[]' for nil:NilClass
that happens when a corrupt audio file is hit.
2021-03-24 17:02:47 -04:00
Anton Georgiev
a950c9af53
Merge pull request #11626 from prlanzarin/u23-recsa
screenshare: add rap processing for screen streams with audio (complements #11622)
2021-03-24 14:36:31 -04:00
germanocaumo
ea375d6c5e remove trailing whitespaces 2021-03-24 14:01:17 -03:00
germanocaumo
35104fba47 number of inputs for amix command, remove old java deskshare events 2021-03-24 13:35:00 -03:00
Pedro Beschorner Marin
0c4cf0135d Handle pad's events and Meteor's instances
Since Meteor was split in multiple process and events started to be
filtered by instances, all Etherpad's Redis events were being discarded.

Etherpad has a Redis' publisher plugin that is unaware of BigBlueButton's
existence. All the communication between them is kept simple with minimal
of internal data exchange. The concept of distincts subscribers at Meteor's
side broke part of this simplicity and, now, Etherpad has to know which
instance must receive it's messages. To provide such information I decided
to include Meteor's instance as part of the pad's id. Should look like:

 - [instanceId]padId for the shared notes
 - [instanceId]padId_cc_(locale) for the closed captions

With those changes the pad id generation made at the recording scripts had to
be re-done because there is no instance id available. Pad id is now recorded at
akka-apps and queried while archiving the shared notes.
2021-03-23 18:03:50 -03:00
Mario Jr
af4f9dbf26 Merge branch 'v2.2.x-release' into merge-2.2-develop 2021-03-23 17:10:28 -03:00
germanocaumo
136f43eb25 Remove screenshare audio specific ffmpeg codec in recording processing. 2021-03-23 14:49:39 -03:00
germanocaumo
95fabfe8c2 Merge branch 'develop' of https://github.com/bigbluebutton/bigbluebutton into u23-recsa 2021-03-23 14:47:20 -03:00
Pedro Beschorner Marin
e48f64b843 Avoid localhost at notes endpoint
Use 127.0.0.1 instead of localhost since Etherpad only listens for ipv4.
2021-03-22 16:41:26 -03:00
Richard Alam
7d95fd9189 Keep recording status files
We still use the recording status files to externally monitor the
 progress of the recordings. Let's keep these files for now until
 we figure out a different way to track the status of the recording.
2021-03-22 09:24:02 -07:00
Fred Dixon
3fdb60ffef
Merge pull request #11685 from kepstin/slide-gen-interpolate
Recording: Don't use string interpolation when generating commands for slide conversion
2021-03-18 17:40:04 -03:00
Calvin Walton
7fab16b2ca Recording: Don't use string interpolation generating commands for slide conversion
Just want to make sure that we don't get any bad filenames sneaking in
and causing havoc.
2021-03-18 11:51:40 -04:00
Calvin Walton
0559152dc7 Improvements for audio desync issues
This incorporates only the audio desync related changes from #11626
* Add the aresample filter with async option to fill in timestamp gaps
* Use the libopus decoder for opus audio instead of ffmpeg's builtin
  decoder
2021-03-18 11:18:39 -04:00
Calvin Walton
2a6b0b62c3 Rework the ffmpeg filter generation in the audio rendering.
This gives the following advantages over the previous code:

* The ffmpeg input filters are loaded from a filter "script" file instead
  of passed on the command line. This fixes some cases of recordings
  failing to process because the ffmpeg command line generated for the
  audio processing exceeded the max command line length limit. (Although
  that only really happens due to BBB bugs...)
* Use absolute positions when trimming audio segments for cuts.
  Previously segments were trimmed to the length of the segment, and the
  results were concatenated. There's some possibility of accumulated
  errors in the segment lengths causing audio desync over time. The new
  code incrementally concatenates the segments, and cuts each segment
  end based on the absolute time since the start of the meeting, to
  avoid error accumulation.
2021-03-18 11:17:50 -04:00
germanocaumo
409e3cbc27 read screenshare audio from archived dir insteaf of original path 2021-03-11 21:40:19 +00:00
germanocaumo
5b07244e1e Fix last commit 2021-03-11 21:38:59 +00:00
germanocaumo
4928ca91d1 Mix screenshare audio with mics again to avoid playback autoplay problems in iOS, fixed desync with aresample 2021-03-11 21:36:40 +00:00
germanocaumo
fdbbffb3aa Improve screenshare audio recording sync:
use libopus decoder and encoder, its better than built-in ffmpeg/flac
don't mix screenshare audio with mics, was generating desync with bad audio segments, encode it together with video file (TODO: needs adjustments in playback)
2021-03-11 21:32:02 +00:00
germanocaumo
0d48dd01cb Re-add screenshare audio recording processing 2021-03-11 21:09:07 +00:00
Andrei Bautu
18b3fc2684 Remove unused ffmpeg settings 2021-03-10 13:10:54 +02:00
Andrei Bautu
8cc99ef4ab Include comments about ffmpeg settings 2021-03-10 12:58:59 +02:00
Andrei Bautu
d71df37b8a Fix detection of empty video segments 2021-03-10 11:40:18 +02:00
Andrei Bautu
beb66512a0 Recording processing using MP4/OGG temporary files, stream copy, and customizable (lower) frame rates.
Discussion from https://github.com/bigbluebutton/bigbluebutton/issues/2483
2021-03-08 20:14:48 +02:00
Anton Georgiev
228bad03d5 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into march4-merge 2021-03-04 21:25:47 +00:00
Calvin Walton
48956ce63f Add some extra docs/setup instructions to the analytics callback script 2021-03-02 16:19:26 -05:00
Pedro Beschorner Marin
c0a7f9cd92 Replace FNV32a pad's id generator with salted SHA1
When managing Etherpad's pads, Meteor makes API calls to initiate the closed captions
and shared notes modules. The pad id was being mapped to a shorter id than the meeting
id because of a Etherpad lenght limitation.

Changed to something less guessable.
2021-02-09 12:59:59 -03:00
dependabot[bot]
db55b0c4eb
Bump nokogiri from 1.10.8 to 1.11.0 in /record-and-playback/core
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.8 to 1.11.0.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.8...v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-09 00:28:29 +00:00
Felipe Cecagno
47af1a391b publish presentation format to use the new bbb-playback; redirect 2.0 to 2.3 by default 2020-12-20 21:43:54 -03:00
Fred Dixon
e08ff14c52
Update events_worker.rb
Fix file existence test.
2020-12-20 18:38:18 -04:00
Anton Georgiev
c1ffced27d Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into develop 2020-12-17 21:14:29 +00:00
Jesus Federico
163d40652a
Update post_events_analytics_callback.rb 2020-12-10 17:23:01 -05:00
Anton Georgiev
d3dae5828a
Merge pull request #10984 from defnull/patch-nfs
Fix: Presentation publishing fails when run on NFS storage
2020-12-08 20:05:46 -05:00
Anton Georgiev
cf7ca49760
Merge pull request #10966 from pedrobmarin/shared-notes-at-playback
Publish recorded shared notes' content
2020-12-08 16:52:39 -05:00
Marcel Hellkamp
9b17dab2e6 Fix: Presentation publishing fails when run on NFS storage
PR #9857 was incomplete and did not completely fix the issues described in #9062 and #9110 (dublicate).
2020-12-07 16:10:54 +01:00
Fred Dixon
00bf08eea7 Fix permissions on systemd scripts for recording processing 2020-12-06 15:40:00 -06:00
Pedro Beschorner Marin
7206b8acc3 Publish recorded shared notes' content
Collects the shared notes' HTML raw data and publishes it along with the other
recording files. The playback will fetch for this file and include an option to
display it's content over the chat.
2020-12-04 09:08:43 -03:00
beckerr-rzht
9eee10eee1
Merge branch 'develop' into develop 2020-12-04 09:45:21 +01:00
Anton Georgiev
0c7ead1916 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into oct16-merge 2020-10-21 14:48:02 +00:00
Fred Dixon
78ced5d41d
Merge pull request #10533 from kepstin/rec-fixes
Recording: Skip shapes with missing "thickness" attribute
2020-09-25 16:59:17 -04:00
Calvin Walton
86c821f4c5 Recording: Skip shapes with missing "thickness" attribute
Not sure what causes this issue, but there's nothing reasonable that can
be done to draw a shape with no thickness. Just skip it.
2020-09-25 16:13:29 -04:00
Calvin Walton
1866eb7194 Perform captions generation in UTF-16 encoding
The indexes returned in recording events from BBB refer to positions
within a UTF-16 encoded string. Rather than attempt to untangle this in
the server (which might have a performance cost), it's easier to switch
the caption processing code to operate in UTF-16 encoding as well to
make it work consistently.

The PyICU library provides a UnicodeString type which is a UTF-16 string
similar to Java and JavaScript, but which supports all the python
indexing methods. It's fairly straightforwards to swap it in in place of
the types used previously, and works natively as an input to the ICU
line break iterator too.

Fixes #10531
2020-09-25 12:39:18 -04:00
Calvin Walton
1268753519 Fix io deadlock in recording scripts process execution utilities
The previous implementation of the BigBlueButton.execute method runs the
process with separate stdout and stderr streams. It first reads all of
the output from stdout, then reads all of the output from stderr.

This can cause a deadlock if the process writes a lot of data to stderr.
The IO buffer for stderr could fill, blocking progress. But since it
hasn't closed stdout, the ruby script is still waiting on a read to
stdout.

Switch to an execution method (using IO.popen) that allows combining
stdout and stderr into a single stream, eliminating the issue.
2020-09-23 16:16:57 -04:00
hiroshisuga
5caf825d42
Update rap-starter.rb
probably a simple typo
2020-09-01 22:05:37 +09:00
Anton Georgiev
b1e73281e4
Merge pull request #10158 from sebastianberm/sebastianberm-patch-chatplayback
Fix newlines in playback of chat
2020-08-25 11:28:02 -04:00
Anton Georgiev
f9d1079b41
Merge pull request #10238 from kepstin/rec-fixes-develop
Events archiver: Strip more invalid characters
2020-08-25 08:36:20 -04:00
hiroshisuga
3cbe9abaf0 events_archiver.rb: Handle an empty meeting_metadata hash from redis
On my server 2.3 alpha, the method metadata_for(meeting_id) gives back {}
(empty Hash). Thus "return if meeting_metadata.nil?" does not occur.

Does @redis.hgetall give {} instead of nil, even though there is a comment in
node_modules/redis/lib/utils.js "hgetall converts its replies to an Object. If
the reply is empty, null is returned"???
2020-08-13 15:46:40 -04:00