agonza1 / free-whip Goto Github PK
View Code? Open in Web Editor NEWWebRTC broadcasting python cli using WHIP (WebRTC-HTTP ingestion protocol)
License: MIT License
WebRTC broadcasting python cli using WHIP (WebRTC-HTTP ingestion protocol)
License: MIT License
Not strictly speaking an issue, but it's preventing me to do some tests, e.g., with a local installation of Galene which uses a self-signed certificate:
raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host localhost:8443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)')]
Unfortunately I'm not skilled enough in Python to understand what I should change to loosen this constraint :-(
Hi,
thanks for sharing a new WHIP client implementation! As part of the IETF 112 Hackathon, I'm tinkering with other WHIP implementations I've become aware of, so I wanted to test yours too. The README says this was tested with my WHIP server (and so Janus), but I can't get it to work for some reason.
When I try to contact the WHIP endoint with your client this is what I get:
[lminiero@lminiero whip-cli-client]$ python publish.py http://localhost:7080/whip/endpoint/test
ICE connection state is closed
Traceback (most recent call last):
File "/home/lminiero/Work/code/services/whip/free-whip/whip-cli-client/publish.py", line 142, in <module>
loop.run_until_complete(
File "/usr/lib64/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/home/lminiero/Work/code/services/whip/free-whip/whip-cli-client/publish.py", line 104, in run
await publish(session=session, player=player)
File "/home/lminiero/Work/code/services/whip/free-whip/whip-cli-client/publish.py", line 88, in publish
await pc.setLocalDescription(offer)
File "/home/lminiero/.local/lib/python3.9/site-packages/aiortc/rtcpeerconnection.py", line 771, in setLocalDescription
await self.__gather()
File "/home/lminiero/.local/lib/python3.9/site-packages/aiortc/rtcpeerconnection.py", line 1011, in __gather
await asyncio.gather(*coros)
File "/home/lminiero/.local/lib/python3.9/site-packages/aiortc/rtcicetransport.py", line 198, in gather
await self._connection.gather_candidates()
File "/home/lminiero/.local/lib/python3.9/site-packages/aioice/ice.py", line 416, in gather_candidates
for candidates in await asyncio.gather(*coros):
File "/home/lminiero/.local/lib/python3.9/site-packages/aioice/ice.py", line 886, in get_component_candidates
_, protocol = await turn.create_turn_endpoint(
File "/home/lminiero/.local/lib/python3.9/site-packages/aioice/turn.py", line 380, in create_turn_endpoint
_, inner_protocol = await loop.create_datagram_endpoint(
File "/usr/lib64/python3.9/asyncio/base_events.py", line 1296, in create_datagram_endpoint
infos = await self._ensure_resolved(
File "/usr/lib64/python3.9/asyncio/base_events.py", line 1396, in _ensure_resolved
return await loop.getaddrinfo(host, port, family=family, type=type,
File "/usr/lib64/python3.9/asyncio/base_events.py", line 856, in getaddrinfo
return await self.run_in_executor(
File "/usr/lib64/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/lib64/python3.9/socket.py", line 954, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
Initially I thought it might be because of the fact I hadn't started Janus in ICE Lite mode (which shouldn't be needed even with aiortc, though, as we use it as part of our automated tests and it works fine with full ICE too), but even enabling ICE Lite I'm still getting the same error. This is all done locally so not sure where the Name or service not known
is coming from.
Any hint on what may be going wrong? Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.