README These 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 ~/dev/bigbluebutton/record-and-playback/core/scripts/bigbluebutton.yml and comment the PRODUCTION directories while uncommenting the DEVELOPMENT folders. The path should match the ones created above. # For PRODUCTION # log_dir: /var/log/bigbluebutton events_dir: /var/bigbluebutton/events # recording_dir: /var/bigbluebutton/recording # published_dir: /var/bigbluebutton/published captions_dir: /var/bigbluebutton/captions # playback_host: develop.distancelearning.cloud playback_protocol: https # 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: 127.0.0.1 3. Stop the recording service: systemctl stop bbb-rap-starter systemctl stop bbb-rap-resque-worker 4. Create a recording using BigBlueButton. After logging out, it should have created a .done file in the /var/bigbluebutton/recording/status/recorded directory. Make note of this meeting-id as we use that to tell the script which recording to process. 5. Before running the scripts, we have to make sure our scripts have the paths set up correctly. In your development environment (~/dev/bigbluebutton/record-and-playback), edit - /core/scripts/archive/archive.rb - /core/scripts/sanity/sanity.rb - presentation/scripts/process/presentation.rb - presentation/scripts/publish/presentation.rb - presentation/scripts/presentation.yml and ensure the scripts are using the DEVELOPMENT PATH. We need to do this so the script will be able to find the core library. # For DEVELOPMENT # Allows us to run the script manually require File.expand_path('../../../../core/lib/recordandplayback', __FILE__) # For PRODUCTION # require File.expand_path('../../../lib/recordandplayback', __FILE__) # For PRODUCTION # publish_dir: /var/bigbluebutton/published/presentation video_formats: - webm # - mp4 # For DEVELOPMENT publish_dir: /home/ubuntu/temp/published/presentation 6. Now we run the archive step. Go to record-and-playback/core/scripts and type ruby archive/archive.rb -m If everything went well, you should now have the raw files in ~/temp/recording/raw/. You can also check the logs at ~/temp/log/archive-.log, and have a .done entry in ~/temp/recording/status/archived. 7. Now we need to do a sanity check to ensure the raw recordings are complete. Again in the scripts folder, type ruby sanity/sanity.rb -m Confirm everything went as intended by checking the logs at ~/temp/log/sanity.log and that a .done entry in ~/temp/recording/status/sanity exists. 8. Assuming the recording passed the sanity check, it's time to process the recording. Set the path of the captions generation script by changing the line ret = BigBlueButton.exec_ret('utils/gen_webvtt', '-i', raw_archive_dir, '-o', target_dir) to ret = BigBlueButton.exec_ret('/home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts/utils/gen_webvtt', '-i', raw_archive_dir, '-o', target_dir) Now, you can run the presentation processing script: cd ~/dev/bigbluebutton/record-and-playback/presentation/scripts ruby process/presentation.rb -m You can monitor the progress by tailing the log at ~/temp/log/presentation/process-.log. Note that each time one of the scripts fails, the corresponding directories for the recording at ~/temp/recording/process/presentation and ~/temp/recording/publish/presentation need to be deleted before executing them again. 9. If everything went 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', a script which we don't run. Manually create the file at vi ~/temp/recording/process/presentation//processing_time Enter any number (e.g. 46843) and save the file. Once again, the path to the poll generation utility needs to be updated: Change ret = BigBlueButton.exec_ret('utils/gen_poll_svg', ...) to ret = BigBlueButton.exec_ret('/home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts/utils/gen_webvtt', ...) Finally, run the publish script: ruby publish/presentation.rb -m -presentation Notice we appended "presentation" to the meetingId, this will tell the script to publish using the "presentation" format. 9. Deploy your changes with deploy.sh and restarting the recording-related services: systemctl restart bbb-rap-starter systemctl restart bbb-rap-resque-worker