From 409e3cbc27edbe60aa5362f20a4d4652a59d63e6 Mon Sep 17 00:00:00 2001 From: germanocaumo <germanocaumo@gmail.com> Date: Thu, 15 Oct 2020 18:27:53 -0300 Subject: [PATCH] read screenshare audio from archived dir insteaf of original path --- .../lib/recordandplayback/generators/audio.rb | 28 ++++++++----------- .../generators/audio_processor.rb | 4 +-- .../recordandplayback/generators/events.rb | 3 +- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/record-and-playback/core/lib/recordandplayback/generators/audio.rb b/record-and-playback/core/lib/recordandplayback/generators/audio.rb index 80c11ea88b..83bbc7ae2b 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/audio.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/audio.rb @@ -86,28 +86,22 @@ module BigBlueButton :audio => nil } - deskshare_start = { - :filename => "", - :timestamp => 0 - } - events.xpath('/recording/event[@module="Deskshare" or (@module="bbb-webrtc-sfu" and (@eventname="StartWebRTCDesktopShareEvent" or @eventname="StopWebRTCDesktopShareEvent"))]').each do |event| - # check if deskshare has audio filename = event.at_xpath('filename').text + # Determine the audio filename + case event['eventname'] + when 'DeskshareStartedEvent', 'DeskshareStoppedEvent' + filename = event.at_xpath('file').text + filename = "#{deskshare_dir}/#{File.basename(filename)}" + when 'StartWebRTCDesktopShareEvent', 'StopWebRTCDesktopShareEvent' + uri = event.at_xpath('filename').text + filename = "#{deskshare_dir}/#{File.basename(uri)}" + end + raise "Couldn't determine audio filename" if filename.nil? + # check if deskshare has audio fileHasAudio = !BigBlueButton::EDL::Audio.audio_info(filename)[:audio].nil? if (fileHasAudio) timestamp = event['timestamp'].to_i - initial_timestamp - # Determine the audio filename - case event['eventname'] - when 'DeskshareStartedEvent', 'DeskshareStoppedEvent' - filename = event.at_xpath('file').text - filename = "#{deskshare_dir}/#{File.basename(filename)}" - when 'StartWebRTCDesktopShareEvent', 'StopWebRTCDesktopShareEvent' - uri = event.at_xpath('filename').text - filename = "#{deskshare_dir}/#{File.basename(uri)}" - end - raise "Couldn't determine audio filename" if filename.nil? - # Add the audio to the EDL case event['eventname'] when 'DeskshareStartedEvent', 'StartWebRTCDesktopShareEvent' 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 4add823dfa..7153ec7919 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb @@ -58,10 +58,10 @@ module BigBlueButton audio_edl, File.join(target_dir, 'recording'), false) # and mixing it with deskshare audio - if BigBlueButton::Events.screenshare_has_audio?(events_xml) + deskshare_dir = "#{archive_dir}/deskshare" + if BigBlueButton::Events.screenshare_has_audio?(events_xml, deskshare_dir) BigBlueButton.logger.info("AudioProcessor.process: processing Deskshare audio...") - deskshare_dir = "#{archive_dir}/deskshare" mixed_dir = "#{archive_dir}/mixed" deskshare_audio_edl = BigBlueButton::AudioEvents.create_deskshare_audio_edl(events, deskshare_dir) diff --git a/record-and-playback/core/lib/recordandplayback/generators/events.rb b/record-and-playback/core/lib/recordandplayback/generators/events.rb index 6dd353a388..491264ff7e 100755 --- a/record-and-playback/core/lib/recordandplayback/generators/events.rb +++ b/record-and-playback/core/lib/recordandplayback/generators/events.rb @@ -693,10 +693,11 @@ module BigBlueButton end # Check if any screenshare files has audio - def self.screenshare_has_audio?(events_xml) + def self.screenshare_has_audio?(events_xml, deskshare_dir) events = Nokogiri::XML(File.open(events_xml)) events.xpath('/recording/event[@eventname="StartWebRTCDesktopShareEvent"]').each do |event| filename = event.at_xpath('filename').text + filename = "#{deskshare_dir}/#{File.basename(filename)}" fileHasAudio = !BigBlueButton::EDL::Audio.audio_info(filename)[:audio].nil? if fileHasAudio return true -- GitLab