diff --git a/record-and-playback/core/lib/recordandplayback/generators/audio.rb b/record-and-playback/core/lib/recordandplayback/generators/audio.rb index 80c11ea88b6e2a20dfd5365207bef6511a558748..83bbc7ae2b0a66288259a1e70d547e677cecb324 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 4add823dfa4a6a4eab68165b12335a06ae37d056..7153ec79196da52d28822df99747b964a0c4c91c 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 6dd353a388953389a2683ad2d5d2d72f031abc7f..491264ff7e31d35553d60bdf1009a25bd6e01dad 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