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