aau-zid / BigBlueButton-liveStreaming

Streams a given BBB Meeting to an RTMP Server.
GNU General Public License v3.0
201 stars 160 forks source link

BigBlueButton-liveStreaming fails with BigBlueButton 2.3.0-beta-2 #119

Closed nikos-pappas closed 3 years ago

nikos-pappas commented 3 years ago

This very useful app performed well up to bbb version 2.3-beta1. Unfortunately I 've just upgrade it and Live streaming is not working with the new BigBlueButton 2.3.0-beta-2

It joins the room for a second and then it fails

log in docker shows: File "stream.py", line 251, in bbb_browser() File "stream.py", line 138, in bbb_browser browser.find_elements_by_xpath('//span[contains(@class,"success")]')[0].click() File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 80, in click self._execute(Command.CLICK_ELEMENT) File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute return self._parent.execute(command, params) File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element ... is not clickable at point (1857, 27). Other element would receive the click:

...
(Session info: chrome=89.0.4389.114)

vasylOstrovskyi commented 3 years ago

Have the same issue, confirm Regards, Vasyl

mtsonline commented 3 years ago

thanks for reporting this - can you copy the join url from the log output of the docker container and open it in your browser - what does it show? I guess something changed there - any popups? Or does it right away open the room?

vasylOstrovskyi commented 3 years ago

Yes, there is a popup asking for pernission to use audio Знімок екрану з 2021-04-07 10-17-35 The corresponding fragment of code (messages in Ukrainian) <button aria-label="Відтворювати звук" aria-disabled="false" class="jumbo--Z12Rgj4 buttonWrapper--x8uow button--Z23moYP"><span class="button--Z2dosza jumbo--Z12Rgj4 success--Z6UU8x circle--Z2c8umk"><i class="icon--2q1XXw icon-bbb-thumbs_up"></i></span><span class="label--Z12LMR3">Відтворювати звук</span></button>

Regards, Vasyl

mtsonline commented 3 years ago

that's what I thought ...so skipping the audio dialog does not work anymore. the parameter: joinParams['userdata-bbb_auto_join_audio'] = "true" seems to be ignored. This was the case for moderators in the past and now the bug also affects attendees.

Could you open an issue in the bigbluebutton repo and link here? We could click the button with selenium, but this would be a workarround and the setting still would be broken - so I think the clean way would be resolving the issue directly.

cheers

vasylOstrovskyi commented 3 years ago

Crated BBB issue https://github.com/bigbluebutton/bigbluebutton/issues/11933 Regards, Vasyl

mtsonline commented 3 years ago

thanks! awesome! cheers

mtsonline commented 3 years ago

Thanks to @pedrobmarin commented When I need to run those things in automation I set --no-user-gesture-required ...this should fix the problem - so anybody feel free to add this to the chromium call and test this and get back with the results - and possibly a pr :-) cheers

ichdasich commented 3 years ago

Just added this to the chromium call and it does not fix the issue. Will take a look on whether we can just click this away and send a PR.

ichdasich commented 3 years ago

ok, the correct key is --autoplay-policy=no-user-gesture-required; This works on CLI, but the container still fails; Digging further.

ichdasich commented 3 years ago

solved, PR inbound

mtsonline commented 3 years ago

Thanks Tobias! apreciate your work! Will merge it as soon as your PR is shown. cheers

ichdasich commented 3 years ago

Ups... wait... just regression tested on 2.2 -.-' That of course breaks. Will have to figure out a version check.

mtsonline commented 3 years ago

ah, please also check if other selenium licks may have to be removed, because of some dialogues disappearing due to this setting ;-)

mtsonline commented 3 years ago

should work for 2.2 and 2.3 as far as I understand. as written above there may be other popups that now are gone and lead to crashes.

ichdasich commented 3 years ago

What i essentially did:

tfiebig@DESKTOP-1J9BJ88 BigBlueButton-liveStreaming % git diff
diff --git a/stream.py b/stream.py
index e9478a9..ab63cf5 100644
--- a/stream.py
+++ b/stream.py
@@ -101,6 +101,7 @@ def set_up():
     options.add_experimental_option("excludeSwitches", ['enable-automation'])
     options.add_experimental_option('prefs', {'intl.accept_languages':'{locale}'.format(locale='en_US.UTF-8')})
     options.add_argument('--start-fullscreen') 
+    options.add_argument('--autoplay-policy=no-user-gesture-required')
     if args.browser_disable_dev_shm_usage:
         options.add_argument('--disable-dev-shm-usage')
     else:
@@ -135,7 +136,6 @@ def bbb_browser():

     element = EC.presence_of_element_located((By.XPATH, '//span[contains(@class,"success")]'))
     WebDriverWait(browser, selenium_timeout).until(element)
-    browser.find_elements_by_xpath('//span[contains(@class,"success")]')[0].click()

     element = EC.invisibility_of_element((By.CSS_SELECTOR, '.ReactModal__Overlay'))
     WebDriverWait(browser, selenium_timeout).until(element)

I assume that the removed line is somewhat essential for 2.2. Do you know if we can easily get the html5-client version from stream.py? Then we can just put an if in front of that.

mtsonline commented 3 years ago

you also have to remove the two lines below ... the first one searches if the tag exists. the others look if the popup comes up and waits as I understand. I did the same in the chat.py when I removed audio from there as the popup disappered of course. So have a look at my last PR to chat.py and see wich lines where removed - same is needed here if the popup is gone. ;-) You can check if the popup has disappeared by copying the join link from the logs and open it in a browser window ... hope that helps

ichdasich commented 3 years ago

Thanks. On that already; The thing is that in 2.3 the popup is gone and in 2.2 it is still there; Should be doable though, thx.

mtsonline commented 3 years ago

oh. that's not nice ...(from BBB) so we have to have an ugly workarround for that. Think they should fix that in 2.2 then, so we can remove the workarround then - what do you think? Could you post that to the issue linked above so they may repair it hopefully, when you got it to work?

ichdasich commented 3 years ago

Well, so what apparently works is a 10s sleep instead of those 5 lines to make everything work as expected. Let me just try to find the right element to wait for, then we don't need upstream changes or ugly workarounds.

ichdasich commented 3 years ago

Got it, eta 5min

mtsonline commented 3 years ago

a 10 sec sleep cannot work I guess, as this won't give access to the audio? It does exit the popup and you won't get audio from the meeting though. So we will have to click if there is the popup asking to allow audio.

ichdasich commented 3 years ago

With the right cli switch (pedro's wasn't correct, see above) there is no popup.

Verified audio and streaming work with the change on bbb2.2 and 2.3-beta-3; PR inbound

pedrobmarin commented 3 years ago

Well, I did not mentioned it would fix your problem. I just said it works for me at https://github.com/mconf/bigbluebot . Either way, thanks for mentioning.

ichdasich commented 3 years ago

No worries. Google seems to just have renamed the option somewhen in the past. :-)

Edit: Meaning effectively it did fix the problem. ;-)

mtsonline commented 3 years ago

Thanks @pedrobmarin
for pointing us to the flag and @ichdasich for investigating the google change and fixing this. cheers