aau-zid / BigBlueButton-liveStreaming

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

Anyone get this working with BBB 2.6? #169

Open szekster opened 1 year ago

szekster commented 1 year ago

Describe the bug I have installed docker, etc on Oracle 8.5 and setup according to instructions but I can't seem to get the stream to appear in youtube studio

To Reproduce Steps to reproduce the behavior:

  1. set all the required BBB_* env vars. (BBB_URL,BBB_SECRET,BBB_MEETING_ID,BBB_STREAM_URL)
  2. run the start command, appears to start correctly.
  3. wait for youtube studio to receive the stream but never get there
  4. tried again without "-d" and got the output below.

Server (please complete the following information):

Additional context screen log when invoked without "-d", seemst to be complaining about name resolution but DNS is working fine on the server.

docker-compose up [+] Running 1/0 ⠿ Container liveStreaming Created 0.0s Attaching to liveStreaming liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Starting pulseaudio... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Traceback (most recent call last): liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1325, in do_open liveStreaming | encode_chunked=req.has_header('Transfer-encoding')) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1281, in request liveStreaming | self._send_request(method, url, body, headers, encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1327, in _send_request liveStreaming | self.endheaders(body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1276, in endheaders liveStreaming | self._send_output(message_body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output liveStreaming | self.send(msg) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 980, in send liveStreaming | self.connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1434, in connect liveStreaming | super().connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 952, in connect liveStreaming | (self.host,self.port), self.timeout, self.source_address) liveStreaming | File "/usr/lib/python3.6/socket.py", line 704, in create_connection liveStreaming | for res in getaddrinfo(host, port, 0, SOCK_STREAM): liveStreaming | File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo liveStreaming | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): liveStreaming | socket.gaierror: [Errno -3] Temporary failure in name resolution liveStreaming | liveStreaming | During handling of the above exception, another exception occurred: liveStreaming | liveStreaming | Traceback (most recent call last): liveStreaming | File "stream.py", line 250, in liveStreaming | while bbb.is_meeting_running(args.id).is_meeting_running() != True: liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 59, in is_meeting_running liveStreaming | response = self.send_api_request(ApiMethod.IS_MEETING_RUNNING, params) liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 135, in send_api_request liveStreaming | response = urlopen(url).read() liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen liveStreaming | return opener.open(url, data, timeout) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 526, in open liveStreaming | response = self._open(req, data) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 544, in _open liveStreaming | '_open', req) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain liveStreaming | result = func(*args) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1368, in https_open liveStreaming | context=self._context, check_hostname=self._check_hostname) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1327, in do_open liveStreaming | raise URLError(err) liveStreaming | urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution> liveStreaming exited with code 1

mtsonline commented 1 year ago

we did not test 2.6 yet - does your config work with older BBB versions? I'ld try with another BBB instance to check wether the config or the instance is the cause for the error.

szekster commented 1 year ago

I have another machine running 2.3 and found I get the same error. I tried using both the external and internal meeting id:

docker-compose up [+] Running 1/0 ⠿ Container liveStreaming Created 0.0s Attaching to liveStreaming liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Starting pulseaudio... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Starting pulseaudio... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Traceback (most recent call last): liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1325, in do_open liveStreaming | encode_chunked=req.has_header('Transfer-encoding')) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1281, in request liveStreaming | self._send_request(method, url, body, headers, encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1327, in _send_request liveStreaming | self.endheaders(body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1276, in endheaders liveStreaming | self._send_output(message_body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output liveStreaming | self.send(msg) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 980, in send liveStreaming | self.connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1434, in connect liveStreaming | super().connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 952, in connect liveStreaming | (self.host,self.port), self.timeout, self.source_address) liveStreaming | File "/usr/lib/python3.6/socket.py", line 704, in create_connection liveStreaming | for res in getaddrinfo(host, port, 0, SOCK_STREAM): liveStreaming | File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo liveStreaming | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): liveStreaming | socket.gaierror: [Errno -3] Temporary failure in name resolution liveStreaming | liveStreaming | During handling of the above exception, another exception occurred: liveStreaming | liveStreaming | Traceback (most recent call last): liveStreaming | File "stream.py", line 250, in liveStreaming | while bbb.is_meeting_running(args.id).is_meeting_running() != True: liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 59, in is_meeting_running liveStreaming | response = self.send_api_request(ApiMethod.IS_MEETING_RUNNING, params) liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 135, in send_api_request liveStreaming | response = urlopen(url).read() liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen liveStreaming | return opener.open(url, data, timeout) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 526, in open liveStreaming | response = self._open(req, data) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 544, in _open liveStreaming | '_open', req) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain liveStreaming | result = func(*args) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1368, in https_open liveStreaming | context=self._context, check_hostname=self._check_hostname) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1327, in do_open liveStreaming | raise URLError(err) liveStreaming | urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution> liveStreaming exited with code 1

szekster commented 1 year ago

all the urls in the environment variables can be resolved and pinged. I am sending the rtmp stream to a youtube studio url: a.rtmp.youtube.com ....

szekster commented 1 year ago

I started over on a debian bullseye machine, tested again on both BBB 2.3 and 2.6.8 and got the same result:

docker-compose up Starting liveStreaming ... done Attaching to liveStreaming liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Starting pulseaudio... liveStreaming | Waiting for pulseaudio to start... liveStreaming | Skipping nsswrapper setup - already initialized liveStreaming | Traceback (most recent call last): liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1325, in do_open liveStreaming | encode_chunked=req.has_header('Transfer-encoding')) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1281, in request liveStreaming | self._send_request(method, url, body, headers, encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1327, in _send_request liveStreaming | self.endheaders(body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1276, in endheaders liveStreaming | self._send_output(message_body, encode_chunked=encode_chunked) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output liveStreaming | self.send(msg) liveStreaming | File "/usr/lib/python3.6/http/client.py", line 980, in send liveStreaming | self.connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 1434, in connect liveStreaming | super().connect() liveStreaming | File "/usr/lib/python3.6/http/client.py", line 952, in connect liveStreaming | (self.host,self.port), self.timeout, self.source_address) liveStreaming | File "/usr/lib/python3.6/socket.py", line 704, in create_connection liveStreaming | for res in getaddrinfo(host, port, 0, SOCK_STREAM): liveStreaming | File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo liveStreaming | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): liveStreaming | socket.gaierror: [Errno -3] Temporary failure in name resolution liveStreaming | liveStreaming | During handling of the above exception, another exception occurred: liveStreaming | liveStreaming | Traceback (most recent call last): liveStreaming | File "stream.py", line 250, in liveStreaming | while bbb.is_meeting_running(args.id).is_meeting_running() != True: liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 59, in is_meeting_running liveStreaming | response = self.send_api_request(ApiMethod.IS_MEETING_RUNNING, params) liveStreaming | File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 135, in send_api_request liveStreaming | response = urlopen(url).read() liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen liveStreaming | return opener.open(url, data, timeout) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 526, in open liveStreaming | response = self._open(req, data) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 544, in _open liveStreaming | '_open', req) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain liveStreaming | result = func(*args) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1368, in https_open liveStreaming | context=self._context, check_hostname=self._check_hostname) liveStreaming | File "/usr/lib/python3.6/urllib/request.py", line 1327, in do_open liveStreaming | raise URLError(err) liveStreaming | urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution> liveStreaming exited with code 1

szekster commented 1 year ago

I've tried Oracle and Debian servers, an Ubuntu server running BBB 2.3 and in every case I get the exact same errors as above.

CommitSithLord commented 1 year ago

Hey, I tried this with both 2.3 and 2.6 and got this-

docker-compose up
Starting liveStreaming ... done
Attaching to liveStreaming
liveStreaming   | Skipping nsswrapper setup - already initialized
liveStreaming   | Starting pulseaudio...
liveStreaming   | Waiting for pulseaudio to start...
liveStreaming   | Skipping nsswrapper setup - already initialized
liveStreaming   | Traceback (most recent call last):
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 1325, in do_open
liveStreaming   |     encode_chunked=req.has_header('Transfer-encoding'))
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 1281, in request
liveStreaming   |     self._send_request(method, url, body, headers, encode_chunked)
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 1327, in _send_request
liveStreaming   |     self.endheaders(body, encode_chunked=encode_chunked)
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 1276, in endheaders
liveStreaming   |     self._send_output(message_body, encode_chunked=encode_chunked)
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output
liveStreaming   |     self.send(msg)
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 980, in send
liveStreaming   |     self.connect()
liveStreaming   |   File "/usr/lib/python3.6/http/client.py", line 952, in connect
liveStreaming   |     (self.host,self.port), self.timeout, self.source_address)
liveStreaming   |   File "/usr/lib/python3.6/socket.py", line 704, in create_connection
liveStreaming   |     for res in getaddrinfo(host, port, 0, SOCK_STREAM):
liveStreaming   |   File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo
liveStreaming   |     for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
liveStreaming   | socket.gaierror: [Errno -3] Temporary failure in name resolution
liveStreaming   | 
liveStreaming   | During handling of the above exception, another exception occurred:
liveStreaming   | 
liveStreaming   | Traceback (most recent call last):
liveStreaming   |   File "stream.py", line 250, in <module>
liveStreaming   |     while bbb.is_meeting_running(args.id).is_meeting_running() != True:
liveStreaming   |   File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 59, in is_meeting_running
liveStreaming   |     response = self.__send_api_request(ApiMethod.IS_MEETING_RUNNING, params)
liveStreaming   |   File "/usr/local/lib/python3.6/dist-packages/bigbluebutton_api_python/bigbluebutton.py", line 135, in __send_api_request
liveStreaming   |     response = urlopen(url).read()
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
liveStreaming   |     return opener.open(url, data, timeout)
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 526, in open
liveStreaming   |     response = self._open(req, data)
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
liveStreaming   |     '_open', req)
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
liveStreaming   |     result = func(*args)
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 1353, in http_open
liveStreaming   |     return self.do_open(http.client.HTTPConnection, req)
liveStreaming   |   File "/usr/lib/python3.6/urllib/request.py", line 1327, in do_open
liveStreaming   |     raise URLError(err)
liveStreaming   | urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
liveStreaming exited with code 1

any idea how to fix this ?