diff --git a/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb b/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb index 4c83edbc435831ae2d65a9e34f451e3a1b0ea6d7..4baca76ce8c183ad564e4b45f07a557720b7cf6b 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb @@ -45,8 +45,10 @@ module BigBlueButton BigBlueButton::EDL::Audio.dump(audio_edl) BigBlueButton.logger.info("Applying recording start stop events:") + start_time = BigBlueButton::Events.first_event_timestamp(events) + end_time = BigBlueButton::Events.last_event_timestamp(events) audio_edl = BigBlueButton::Events.edl_match_recording_marks_audio( - audio_edl, events) + audio_edl, events, start_time, end_time) BigBlueButton::EDL::Audio.dump(audio_edl) @audio_file = BigBlueButton::EDL::Audio.render(audio_edl, "#{audio_dir}/recording") diff --git a/record-and-playback/core/lib/recordandplayback/generators/events.rb b/record-and-playback/core/lib/recordandplayback/generators/events.rb index 371ef60cae96e72aa937fd31922b235c64f9c39f..9fa9a64f6af2dd1a779df7e722fdfa7123ae7cbe 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/events.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/events.rb @@ -293,19 +293,11 @@ module BigBlueButton end end - def self.edl_match_recording_marks_audio(edl, events) + def self.edl_match_recording_marks_audio(edl, events, start_time, end_time) edl_entry_offset = BigBlueButton::Events.edl_entry_offset_audio edl_empty_entry = BigBlueButton::Events.edl_empty_entry_audio return BigBlueButton::Events.edl_match_recording_marks(edl, events, - edl_entry_offset, edl_empty_entry) - end - - def self.edl_trim_segment_audio(edl, start_timestamp, end_timestamp) - edl_entry_offset = BigBlueButton::Events.edl_entry_offset_audio - edl_empty_entry = BigBlueButton::Events.edl_empty_entry_audio - return BigBlueButton::Events.edl_trim_segment(edl, - edl_entry_offset, edl_empty_entry, - start_timestamp, end_timestamp) + edl_entry_offset, edl_empty_entry, start_time, end_time) end def self.edl_entry_offset_video @@ -330,19 +322,11 @@ module BigBlueButton end end - def self.edl_match_recording_marks_video(edl, events) + def self.edl_match_recording_marks_video(edl, events, start_time, end_time) edl_entry_offset = BigBlueButton::Events.edl_entry_offset_video edl_empty_entry = BigBlueButton::Events.edl_empty_entry_video return BigBlueButton::Events.edl_match_recording_marks(edl, events, - edl_entry_offset, edl_empty_entry) - end - - def self.edl_trim_segment_video(edl, start_timestamp, end_timestamp) - edl_entry_offset = BigBlueButton::Events.edl_entry_offset_video - edl_empty_entry = BigBlueButton::Events.edl_empty_entry_video - return BigBlueButton::Events.edl_trim_segment(edl, - edl_entry_offset, edl_empty_entry, - start_timestamp, end_timestamp) + edl_entry_offset, edl_empty_entry, start_time, end_time) end def self.edl_apply_start_stop_events(edl, edl_entry_offset, edl_empty_entry, start_stop_events) @@ -414,10 +398,16 @@ module BigBlueButton return new_edl end - def self.edl_match_recording_marks(edl, events, edl_entry_offset, edl_empty_entry) + def self.edl_match_recording_marks(edl, events, + edl_entry_offset, edl_empty_entry, + start_time, end_time) initial_timestamp = BigBlueButton::Events.first_event_timestamp(events) start_stop_events = BigBlueButton::Events.match_start_and_stop_rec_events( BigBlueButton::Events.get_start_and_stop_rec_events(events)) + start_stop_events = BigBlueButton::Events.trim_start_and_stop_rec_events( + start_stop_events, start_time, end_time) + + # Convert to 0-based timestamps to match the edl entries start_stop_events.each do |record_event| record_event[:start_timestamp] -= initial_timestamp record_event[:stop_timestamp] -= initial_timestamp @@ -426,20 +416,6 @@ module BigBlueButton return BigBlueButton::Events.edl_apply_start_stop_events(edl, edl_entry_offset, edl_empty_entry, start_stop_events) end - def self.edl_trim_segment(video_edl, edl_entry_offset, edl_empty_entry, start_timestamp, stop_timestamp) - # The logic required here is already implemented in the - # match_recording_marks function, so just create a fake recording - # start/stop event list and run that. - start_stop_events = [ - { - start_timestamp: start_timestamp, - stop_timestamp: stop_timestamp - } - ] - - return BigBlueButton::Events.edl_apply_start_stop_events(edl, edl_entry_offset, edl_empty_entry, start_stop_events) - end - def self.linkify( text ) generic_URL_regexp = Regexp.new( '(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)', Regexp::MULTILINE | Regexp::IGNORECASE ) starts_with_www_regexp = Regexp.new( '(^|[\n ])((www)\.[^ \"\t\n\r<]*)', Regexp::MULTILINE | Regexp::IGNORECASE ) diff --git a/record-and-playback/core/lib/recordandplayback/generators/video.rb b/record-and-playback/core/lib/recordandplayback/generators/video.rb index 0b4af24167b5d1d8baa20ac8933885f007b8285f..a320337ae4194a695ea5d05dfb053fcb45097ea9 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/video.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/video.rb @@ -33,10 +33,12 @@ module BigBlueButton events = Nokogiri::XML(File.open("#{temp_dir}/#{meeting_id}/events.xml")) # Process user video (camera) + start_time = BigBlueButton::Events.first_event_timestamp(events) + end_time = BigBlueButton::Events.last_event_timestamp(events) webcam_edl = BigBlueButton::Events.create_webcam_edl( events, "#{temp_dir}/#{meeting_id}") user_video_edl = BigBlueButton::Events.edl_match_recording_marks_video( - webcam_edl, events) + webcam_edl, events, start_time, end_time) BigBlueButton::EDL::Video.dump(user_video_edl) user_video_layout = { @@ -73,10 +75,12 @@ module BigBlueButton events = Nokogiri::XML(File.open("#{temp_dir}/#{meeting_id}/events.xml")) + start_time = BigBlueButton::Events.first_event_timestamp(events) + end_time = BigBlueButton::Events.last_event_timestamp(events) deskshare_edl = BigBlueButton::Events.create_deskshare_edl( events, "#{temp_dir}/#{meeting_id}") deskshare_video_edl = BigBlueButton::Events.edl_match_recording_marks_video( - deskshare_edl, events) + deskshare_edl, events, start_time, end_time) return if not BigBlueButton.video_recorded?(deskshare_video_edl)