v27 changes ported to v30 part 2.

This commit is contained in:
André 2023-11-10 15:09:45 -03:00
parent 6a10a27f2a
commit 96d9f71030
4 changed files with 19 additions and 16 deletions

View File

@ -872,6 +872,7 @@ class MeetingActor(
val hasModeratorLeftRecently = (TimeUtil.timeNowInMs() - state.expiryTracker.endWhenNoModeratorDelayInMs) < state.expiryTracker.lastModeratorLeftOnInMs val hasModeratorLeftRecently = (TimeUtil.timeNowInMs() - state.expiryTracker.endWhenNoModeratorDelayInMs) < state.expiryTracker.lastModeratorLeftOnInMs
if (!hasModeratorLeftRecently) { if (!hasModeratorLeftRecently) {
log.info("Meeting will end due option endWhenNoModerator is enabled and all moderators have left the meeting. meetingId=" + props.meetingProp.intId) log.info("Meeting will end due option endWhenNoModerator is enabled and all moderators have left the meeting. meetingId=" + props.meetingProp.intId)
endAllBreakoutRooms(eventBus, liveMeeting, state, MeetingEndReason.ENDED_DUE_TO_NO_MODERATOR)
sendEndMeetingDueToExpiry( sendEndMeetingDueToExpiry(
MeetingEndReason.ENDED_DUE_TO_NO_MODERATOR, MeetingEndReason.ENDED_DUE_TO_NO_MODERATOR,
eventBus, outGW, liveMeeting, eventBus, outGW, liveMeeting,

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
set -ex set -ex
RELEASE=4.0.3 RELEASE=4.0.4
cat <<MSG cat <<MSG
This tool downloads prebuilt packages built on Github Actions This tool downloads prebuilt packages built on Github Actions
The corresponding source can be browsed at https://github.com/bigbluebutton/bbb-presentation-video/tree/${RELEASE} The corresponding source can be browsed at https://github.com/bigbluebutton/bbb-presentation-video/tree/${RELEASE}

View File

@ -1,4 +1,3 @@
import { throttle } from '/imports/utils/throttle';
import { diff } from '@mconf/bbb-diff'; import { diff } from '@mconf/bbb-diff';
import { Session } from 'meteor/session'; import { Session } from 'meteor/session';
import Auth from '/imports/ui/services/auth'; import Auth from '/imports/ui/services/auth';
@ -8,9 +7,9 @@ import Users from '/imports/api/users';
import AudioService from '/imports/ui/components/audio/service'; import AudioService from '/imports/ui/components/audio/service';
import deviceInfo from '/imports/utils/deviceInfo'; import deviceInfo from '/imports/utils/deviceInfo';
import { isLiveTranscriptionEnabled } from '/imports/ui/services/features'; import { isLiveTranscriptionEnabled } from '/imports/ui/services/features';
import { unique } from 'radash'; import { unique, throttle } from 'radash';
const THROTTLE_TIMEOUT = 1000; const THROTTLE_TIMEOUT = 200;
const CONFIG = Meteor.settings.public.app.audioCaptions; const CONFIG = Meteor.settings.public.app.audioCaptions;
const ENABLED = CONFIG.enabled; const ENABLED = CONFIG.enabled;
@ -105,17 +104,13 @@ const updateTranscript = (id, transcript, locale, isFinal) => {
makeCall('updateTranscript', id, start, end, text, transcript, locale, isFinal); makeCall('updateTranscript', id, start, end, text, transcript, locale, isFinal);
}; };
const throttledTranscriptUpdate = throttle(updateTranscript, THROTTLE_TIMEOUT, { const throttledTranscriptUpdate = throttle({ interval: THROTTLE_TIMEOUT }, updateTranscript);
leading: false,
trailing: true,
});
const updateInterimTranscript = (id, transcript, locale) => { const updateInterimTranscript = (id, transcript, locale) => {
throttledTranscriptUpdate(id, transcript, locale, false); throttledTranscriptUpdate(id, transcript, locale, false);
}; };
const updateFinalTranscript = (id, transcript, locale) => { const updateFinalTranscript = (id, transcript, locale) => {
throttledTranscriptUpdate.cancel();
updateTranscript(id, transcript, locale, true); updateTranscript(id, transcript, locale, true);
}; };

View File

@ -120,14 +120,21 @@ module BigBlueButton
# Check for and handle audio files with mismatched lengths (generated # Check for and handle audio files with mismatched lengths (generated
# by buggy versions of freeswitch in old BigBlueButton # by buggy versions of freeswitch in old BigBlueButton
if entry[:original_duration] && (audioinfo[audio[:filename]][:duration].to_f / entry[:original_duration]) < 0.997 && if (audioinfo[audio[:filename]][:format][:format_name] == 'wav' ||
audioinfo[audio[:filename]][:audio][:codec_name] == 'vorbis') &&
entry[:original_duration] &&
(audioinfo[audio[:filename]][:duration].to_f / entry[:original_duration]) < 0.997 &&
((entry[:original_duration] - audioinfo[audio[:filename]][:duration]).to_f / ((entry[:original_duration] - audioinfo[audio[:filename]][:duration]).to_f /
entry[:original_duration]).abs < 0.05 entry[:original_duration]).abs < 0.05
BigBlueButton.logger.warn " Audio file length mismatch, adjusting speed to #{speed}" BigBlueButton.logger.warn " Audio file length mismatch, adjusting speed to #{speed}"
speed = audioinfo[audio[:filename]][:duration].to_f / entry[:original_duration] @@ -141,9 +144,9 @@ def self.render(edl, output_basename)
seek = 0 ffmpeg_filter << "#{FFMPEG_AEVALSRC},#{FFMPEG_AFORMAT}"
end end
ffmpeg_filter << ',asetpts=N'
ffmpeg_filter << ",atempo=#{speed},atrim=start=#{ms_to_s(audio[:timestamp])}" if speed != 1
# Skip this input and generate silence if the seekpoint is past the end of the audio, which can happen # Skip this input and generate silence if the seekpoint is past the end of the audio, which can happen
# if events are slightly misaligned and you get unlucky with a start/stop or chapter break. # if events are slightly misaligned and you get unlucky with a start/stop or chapter break.
if audio[:timestamp] < (audioinfo[audio[:filename]][:duration] * speed) if audio[:timestamp] < (audioinfo[audio[:filename]][:duration] * speed)