Commit Graph

371 Commits

Author SHA1 Message Date
Leonardo Crauss Daronco
58fe40dadd Fix reference to the format name in rap-publish-worker 2017-10-09 19:06:06 -03:00
Leonardo Crauss Daronco
af87bc2d3f Merge remote-tracking branch 'upstream/master' into v1.1.0-rap-on-resque 2017-10-09 16:37:28 -03:00
Calvin Walton
e37db34eb4 Correctly handle a recording start being the last event in a recording.
In some unusual cases, the recording start can be the last event in the
events file, or at least have the same timestamp as such.

Add some code to check the array bounds and break if needed, so we
don't check the timestamp on the (non-existant) event after the last
event.
2017-10-02 12:31:31 -04:00
Calvin Walton
3f1fb1dc31 Handle recordings that have an unmatched DeskshareStartedEvent
The previous code looked for stop events and tried to find their
associated start event. This obviously doesn't work if there was
no stop event. But if there was a start event, we need to show the
deskshare… so rework to code to try to find the matching stop to each
start instead, and use the end of the meeting if no matching stop was
found.
2017-09-13 17:17:17 -04:00
Calvin Walton
399b1cb543 RnP: Don't fail processing if an image can't be converted to png 2017-09-05 11:21:16 -04:00
Calvin Walton
dba121e6f4 Merge pull request #3998 from kepstin/caption-fixes
Update caption track generation based on feedback
2017-08-25 12:04:59 -04:00
Calvin Walton
33a511d800 Move the custom_hash require to publish rap worker where it's used 2017-08-18 17:45:15 -04:00
Calvin Walton
dba5cd9196 Various recording script fixes & cleanups
This is just a bundle of a few things I've been fixing up in the past
while.

= Workaround for BBB 1.1 beta deskshare timestamp bug

This is unlikely to be used, but I have the code for it, might as
well merge it in.

= Rework video tiling code for ffmpeg

Render video using the 'hstack' and 'vstack' filters rather than the
'overlay' filter. This is somewhat faster, particularly with lots of
videos.

= Etc.

- Remove usage of the streamio-ffmpeg gem.
  The video rendering code has some stuff to directly read 'ffprobe'
  output, so re-use that instead of this gem (which is kind of old and
  has issues with newer ffmpeg versions).

- Don't hardcode the deskshare video area size, pull it from the
  properties file

- Remove some code that worked around missing video end events.
  In some cases this could cause flickering or strange video issues.
  It's no longer strictly needed, the new tiling code doesn't break if
  the seekpoint is after the end of the video.
2017-08-18 15:24:54 -04:00
Leonardo Crauss Daronco
0b662c5342 Fix call to resque's "prune_dead_workers" on rap workers 2017-08-15 12:10:34 -03:00
Leonardo Crauss Daronco
aa8a7818a9 Remove stale workers when starting a rap worker
A simple but effective way of garbage collection.
See:

  http://www.rubydoc.info/github/resque/resque/Resque%2FWorker:prune_dead_workers
2017-08-11 17:32:42 -03:00
Leonardo Crauss Daronco
2a253cf3bd Schedule the next rec step in the base worker 2017-08-09 11:52:52 -03:00
Leonardo Crauss Daronco
50e02ad7dc Specify the sequence of rec steps in the props file
Removed from the code, now it can be specified in the properties file.
Makes it easier to include new processing scripts and control dependencies
between them.
2017-08-07 18:08:17 -03:00
Calvin Walton
c6f4ca9b56 BBB version is expected to be 3 numbers in recording events 2017-08-03 11:26:36 -04:00
Calvin Walton
056d7f2af6 Mark recordings as being from bbb 2.0
This will let the recording scripts adapt to some of the more difficult to
handle changes.
2017-08-03 11:02:28 -04:00
Leonardo Crauss Daronco
bc926be8d2 Simplify rap-starter a little 2017-07-14 17:35:06 -03:00
Leonardo Crauss Daronco
b01ab0574a Make sure rap resque workers will run from the correct directory 2017-07-13 17:48:20 -03:00
Leonardo Crauss Daronco
c34f3adff0 Add option to configure a different redis server for rap workers
Makes it possible to have a separate redis for workers, which helps when
scaling the processing.
2017-07-13 17:48:02 -03:00
Leonardo Crauss Daronco
076da25a7b Let exceptions be raised on rap resque workers
Let the exceptions be raised so that the job will be put in a "failed"
queue with all information needed.
2017-07-13 14:36:46 -03:00
Leonardo Crauss Daronco
71515d3a0c Make sure bbb-rap-resque-worker starts after boot 2017-07-13 14:36:45 -03:00
Leonardo Crauss Daronco
0252604b16 Add systemd scripts for rap workers on redis 2017-07-13 14:36:45 -03:00
Leonardo Crauss Daronco
13623e96fa Use a hash to pass options to rap workers, makes it easier to extend
With a hash it's easier for customizations to pass new parameters and
even create new types of workers.
2017-07-13 14:36:45 -03:00
Leonardo Crauss Daronco
5488cba3dd Run a different worker for each rap processing format available
Was running all formats inside a single worker, now there is a worker for
each processing script. Each will trigger its own publish worker when
done.
2017-07-13 14:36:44 -03:00
Leonardo Crauss Daronco
27cadca49a Use recording status files for info only, not as triggers
With resque workers we don't need to use status files to trigger each
step of the recording process. So instead of using status files as triggers
they are not used only for information, so that the workers can know if
a e.g. processing script failed or succeeded.
2017-07-13 14:36:44 -03:00
Leonardo Crauss Daronco
1320fcb900 Move common rap functionality to a base class
Moved all workers to a common directory, inheriting from a common base
class that has all common methods used by all workers.
2017-07-13 14:36:44 -03:00
Leonardo Crauss Daronco
72813a908c Move sanity, process and publish rap workers to run in resque
Same as 1bcdc45 but for the other scripts.
2017-07-13 14:36:43 -03:00
Leonardo Crauss Daronco
5aeeee25fd Move rap archive to resque, first step on moving all steps to resque
For now the differences are that the archive worker will run inside
resque (it is a resque worker now) and there is a "rap-trigger" file that
is executed by systemd to detect recordings that need to be archived and
add a job on resque to archive them.

The process os scheduling jobs still needs to be reviewed, but for now will
be done by rap-trigger.
2017-07-13 14:36:43 -03:00
Pedro Beschorner Marin
2097b611ed Merge remote-tracking branch 'prlanzarin/1.1-transcode-screenshare-merge' into bigbluebutton/bbb-2.x-mconf
Conflicts:
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/LiveMeeting.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSenderActor.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersApp.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersModel.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala
	bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/PhoneOptions.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/WebRTCDeskshareManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/model/ScreenshareOptions.as
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMap.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/UserGraphicHolder.mxml
	record-and-playback/core/scripts/rap-process-worker.rb
2017-07-11 20:41:38 +00:00
Calvin Walton
a28efe68d0 Don't crash on IME-inserted captions
Current BBB client is generating invalid indexes when characters are
inserted with an IME - the edit indexes are as if the preedit text was
being removed, but the preedit text was never sent in the first place.

For now, just don't crash if there's an edit that would remove text
which is past the end of known text. The result might be broken, but
it won't prevent the rest of the recording from working.
2017-06-13 16:02:03 -04:00
Pedro Beschorner Marin
15c6420e97 Merge tag 'v1.1.0' into 1.1-transcode
tagging v1.1.0 release

 Conflicts:
	bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java
	bbb-web-api/src/main/java/org/bigbluebutton/api/messaging/RedisMessagingService.java
	bigbluebutton-client/resources/config.xml.template
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/PhoneOptions.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
	record-and-playback/core/scripts/rap-process-worker.rb
2017-06-13 17:44:12 +00:00
Pedro Beschorner Marin
719ef1377a Merge remote-tracking branch 'mconf' into merging-into-bbb-1.1
Conflicts:
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersApp.scala
	bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
	bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java
	bigbluebutton-client/locale/en_US/bbbResources.properties
	bigbluebutton-client/locale/pt_BR/bbbResources.properties
	bigbluebutton-client/resources/prod/MconfLive.html
	bigbluebutton-client/src/org/bigbluebutton/common/Images.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/BrowserCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/JavaCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopPublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
	bigbluebutton-config/bin/bbb-conf
	record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb
	record-and-playback/core/lib/recordandplayback/generators/video.rb
	record-and-playback/core/scripts/rap-worker.rb
	record-and-playback/presentation/playback/presentation/0.9.0/lib/writing.js
	record-and-playback/presentation/scripts/process/presentation.rb
	record-and-playback/presentation/scripts/publish/presentation.rb
2017-06-07 19:31:15 +00:00
Calvin Walton
11da0b61e0 Update caption track generation based on feedback
I've had a chance to see how this script behaves with actual live
caption tracks now, and there's room for improvement. In particular,
it often generates cues that overlap - the next one appears before the
previous one disappears. The browser player position handles this
really poorly, and it's nearly unreadable.

The solution is to, if two cues would overlap, merge them into a
single multiline cue that displays for the full time. This is a lot
easier to read.

Some extra code is added to de-overlap any remaining cues (e.g. if
there's a third cue that would also overlap). This will reduce the
time that the earlier cue gets shown below my preferred minimum, but
not really much we can do about that if people are talking/typing
quickly.

The code can easily be tweaked to set a different number of maximum
lines per cue if desired.
2017-06-06 09:24:14 -04:00
Ghazi Triki
7d283cd154 Merge remote-tracking branch 'bigbluebutton/master' into merge-master-into-2x
# Conflicts:
#	bigbluebutton-client/resources/config.xml.template
#	bigbluebutton-client/src/org/bigbluebutton/modules/phone/PhoneOptions.as
#	bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml
#	record-and-playback/core/scripts/rap-process-worker.rb
2017-05-22 17:35:24 +01:00
Calvin Walton
da79d1e3b3 rap-process-worker: Write processing_time file only if processing succeeded
If processing didn't succeed, the directory where it is trying to write
the file might not exist, causing an exception in the worker which leads
to it getting stuck in a retry loop.
2017-05-08 16:10:59 -04:00
Felipe Cecagno
9f6ef49847 check if the deskshare video file is valid before processing it 2017-05-07 19:12:34 -03:00
Pedro Beschorner Marin
cab466e926 Merge pull request #399 from fcecagno/fix-deskshare-ser
recording: Run the 'ser' fixup tool on deskshare videos, too
2017-04-17 13:59:11 -03:00
Calvin Walton
d00024d569 recording: also archive .flv.ser files from deskshare directory 2017-04-16 17:28:37 -03:00
Calvin Walton
f5731b74c5 recording: Run the 'ser' fixup tool on deskshare videos, too
Since the deskshare videos are saved in flv files by red5, they can
have the same partially written file issue as seen on webcams.
2017-04-16 17:20:43 -03:00
alexandre
f8c976fd54 Certifying that we process the audio before getting it in AudioProcessor 2017-04-13 17:23:13 -03:00
alexandre
cf176a6990 Saving processed audio and using it to process webcam videos
Webcam videos processing was processing the audio again.
2017-04-13 15:58:17 -03:00
Pedro Beschorner Marin
f59e42bb02 Merge remote-tracking branch 'bigbluebutton/master' into merging-into-bbb-1.1 2017-04-04 20:42:15 +00:00
Felipe Cecagno
2b9dcc37de process recordings in chronological order 2017-04-01 20:00:37 -03:00
Fred Dixon
cd491c67b6 Moved the recording systemd scripts into the core directory 2017-03-23 10:36:10 -05:00
Calvin Walton
dd23536c84 record-and-playback: Split rap-worker into separate workers per step.
The purpose of this is to ensure that the recording processing with make
visible forwards progress, by ensuring that different steps in the
recording pipeline don't block each-other.

This fixes:
- recordings being processed prevent archiving new recordings from running
- recordings can't be published until all pending recording processing
  completes

It does allow recording archive, sanity, process, publish steps to run in
parallel with each other, but at most one recording will be in each step at
a time. (I.e. while one recording is being processed, a different recording
can be published). This may potentially increase CPU usage for some users.
If you expect this to be a problem, you can set resource controls (see
`man systemd.resource-control`) on the bbb_record_core.slice systemd unit.
2017-03-22 17:20:29 -04:00
Pedro Beschorner Marin
0592568ac8 Adding back some methods that were excluded from master but we were using for screenshare's playback annotations 2017-03-22 17:31:35 +00:00
Pedro Beschorner Marin
0ab207c997 Merge remote-tracking branch 'mconf/mconf' 2017-03-21 19:47:11 +00:00
Pedro Beschorner Marin
c74cc682c4 Merge remote-tracking branch 'mconf/mconf' 2017-03-20 19:45:59 +00:00
Richard Alam
72c42f9d70 - build get recordings api response 2017-03-13 21:43:39 +00:00
Richard Alam
4e59521268 - store breakout metadata and breakout rooms in events.xml only if they are present. 2017-03-10 19:39:20 +00:00
Richard Alam
71bcd779b7 - process breakout rooms in events.xml and metadata.xml 2017-03-09 23:01:15 +00:00
Pedro Beschorner Marin
3e43602b33 Changed deskshare start/stop matching method 2017-02-23 20:17:16 +00:00