bigbluebutton-Github/record-and-playback/core/scripts
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
..
archive Fix note id 2020-04-29 13:08:10 -03:00
events Fix note id 2020-04-29 13:08:10 -03:00
post_archive Switch "post" scripts to be a drop-in directory. 2014-08-11 14:57:32 -04:00
post_process Switch "post" scripts to be a drop-in directory. 2014-08-11 14:57:32 -04:00
post_publish Use the right bigbluebutton user for recording directories. 2019-02-08 17:53:57 +01:00
process Move captions.rb to utils directory. 2019-05-10 16:56:29 +01:00
publish - make script dir part of core instead of separate bin dir for easier triggering of build/packaging of bbb-record-core package 2011-05-22 17:10:22 -04:00
sanity - add ability to set redis password on RnP 2018-12-14 14:16:12 -08:00
utils Perform captions generation in UTF-16 encoding 2020-09-25 12:39:18 -04:00
bbb-0.9-beta-recording-update Update bbb-0.9-beta-recording-update 2016-06-26 11:52:09 -04:00
bbb-0.9-recording-size refactored part of the bbb-0.9-recording-size code in order to include the size on the download size for mconf_encrypted and the playback size for the others; included raw_size for all available formats 2015-09-08 17:18:02 -03:00
bbb-1.1-meeting-tag Script for fixing meeting tag in recordings migrated from BBB 1.0 and before 2018-09-20 14:23:29 +00:00
bigbluebutton.yml Merge remote-tracking branch 'bigbluebutton/master' into text-tracks 2019-05-13 14:46:20 +01:00
cleanup.rb cleanup 2018-07-12 00:06:14 -03:00
rap-archive-worker.rb - run keep-events worker separate from archive-worker 2019-07-04 11:00:59 -07:00
rap-caption-inbox.rb edited rap-caption-inbox.rb to get appropriate files in presentation 2019-10-30 13:10:24 -04:00
rap-events-worker.rb - convert tabs to spaces 2019-07-10 13:09:38 -07:00
rap-process-worker.rb Sort sanity files so it processes older recordings first 2020-05-23 01:28:43 -03:00
rap-publish-worker.rb Ensure that files are handled safely 2020-06-17 11:09:09 +01:00
rap-sanity-worker.rb - add ability to set redis password on RnP 2018-12-14 14:16:12 -08:00
README record-and-playback: Split rap-worker into separate workers per step. 2017-03-22 17:20:29 -04:00

README

This instructions below are for testing by running scripts manually:

1. Create some temp scratch dirs:
    mkdir -p ~/temp/log/presentation ~/temp/recording/{process,publish,raw} ~/temp/recording/status/{recorded,archived,processed,sanity} ~/temp/published

2. Edit core/scripts/bigbluebutton.yml and comment out the PRODUCTION dirs while uncommenting the DEVELOPMENT dir. The dir should match what you created above.

raw_audio_src: /var/freeswitch/meetings
raw_video_src: /usr/share/red5/webapps/video/streams
raw_deskshare_src: /var/bigbluebutton/deskshare
raw_presentation_src: /var/bigbluebutton
redis_host: 127.0.0.1
redis_port: 6379


# For PRODUCTION
log_dir: /var/log/bigbluebutton
recording_dir: /var/bigbluebutton/recording
published_dir: /var/bigbluebutton/published
playback_host: 10.0.3.203

# For DEVELOPMENT
# This allows us to run the scripts manually
#scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
#log_dir: /home/ubuntu/temp/log
#recording_dir: /home/ubuntu/temp/recording
#published_dir: /home/ubuntu/temp/published
#playback_host: 192.168.22.137

3. Create a recording using BigBlueButton. After logging out, it should have created a <meeting-id>.done file in
   /var/bigbluebutton/recording/status/recorded dir. Make note of this meeting-id as we use that to tell the script
   which recording to process.

4. Before running the scripts, we have to make sure our scripts have the PATHs setup correctly.
   Edit presentation/scripts/process/presentation.rb and uncomment the DEVELOPMENT PATH while
   commenting the PRODUCTION PATH. We need to do this so the script will be able to find the
   core library.

5. Now we run the archive step. Go to record-and-playback/core/scripts dir and type
     ruby archive/archive.rb -m <meeting-id>

6. If everything goes well, you should have the raw files in ~/temp/recording/raw/<meeting-id>
   You can also check the logs at ~/temp/log/archive-<meeting-id>.log

   You should also have an entry in ~/temp/recording/status/archived dir

7. Then we need to do a sanity check if the raw recordings are complete. Type
     ruby sanity/sanity.rb -m <meeting-id>

   Check the log in ~/temp/log/sanity.log

   You should also have an entry in ~/temp/recording/status/sanity dir

8. Assuming the recording passed the sanity check, it's time to process the recording.
     cd record-and-playback/presentation/scripts
     ruby process/presentation.rb -m <meeting-id>

     You can monitor the progress by tailing the log at ~/temp/log/presentation/process-<meeting-id>.log

9. Assuming that everything goes well. We can now run the publish script. However, we need to cheat a little bit.
   The publish script will be looking for a "processing_time" file which contains information on how long the
   processing took. Unfortunately, that file is created by the rap-worker.rb script which we don't run.

   So we create that file manually at 
    vi  ~/temp/recording/process/presentation/<meeting-d>/processing_time

   Enter any number (e.g. 46843) and save the file.

10. Now run the publish script
      ruby publish/presentation.rb -m <meeting-id>-presentation

    Notice we appended "presentation" to the meeting-id, this will tell the script to publish using the "presentation" format.