v27 changes ported to v30 part 2.
This commit is contained in:
parent
6a10a27f2a
commit
96d9f71030
@ -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,
|
||||||
|
@ -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}
|
||||||
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user