Skip to content
Snippets Groups Projects
  1. May 29, 2021
  2. May 04, 2021
  3. Apr 29, 2021
    • Calvin Walton's avatar
      Recording: bbb-record --rebuild restarts processing at the sanity step · 9f5832a5
      Calvin Walton authored
      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.
      9f5832a5
  4. Apr 28, 2021
    • Calvin Walton's avatar
      Recording: Halt processing after archive step for non-recorded meetings · 8098b6b3
      Calvin Walton authored
      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
      8098b6b3
  5. Apr 14, 2021
    • Calvin Walton's avatar
      Split the EDL recording marks generation out to a helper function · 9e7cecb0
      Calvin Walton authored
      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.
      9e7cecb0
  6. Mar 26, 2021
  7. Mar 25, 2021
  8. Mar 24, 2021
  9. Mar 23, 2021
    • Pedro Beschorner Marin's avatar
      Handle pad's events and Meteor's instances · 0c4cf013
      Pedro Beschorner Marin authored
      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.
      0c4cf013
    • germanocaumo's avatar
  10. Mar 22, 2021
  11. Mar 18, 2021
    • Calvin Walton's avatar
      Recording: Don't use string interpolation generating commands for slide conversion · 7fab16b2
      Calvin Walton authored
      Just want to make sure that we don't get any bad filenames sneaking in
      and causing havoc.
      7fab16b2
    • Calvin Walton's avatar
      Improvements for audio desync issues · 0559152d
      Calvin Walton authored
      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
      0559152d
    • Calvin Walton's avatar
      Rework the ffmpeg filter generation in the audio rendering. · 2a6b0b62
      Calvin Walton authored
      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.
      2a6b0b62
  12. Mar 11, 2021
  13. Mar 10, 2021
  14. Mar 08, 2021
  15. Mar 02, 2021
  16. Feb 09, 2021
  17. Dec 21, 2020
  18. Dec 20, 2020
  19. Dec 10, 2020
  20. Dec 07, 2020
  21. Dec 06, 2020
  22. Dec 04, 2020
  23. Sep 25, 2020
    • Calvin Walton's avatar
      Recording: Skip shapes with missing "thickness" attribute · 86c821f4
      Calvin Walton authored
      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.
      86c821f4
    • Calvin Walton's avatar
      Perform captions generation in UTF-16 encoding · 1866eb71
      Calvin Walton authored
      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
      1866eb71
Loading