WebRTC ICE connection fails immediately (checking → failed) on Python SDK (worked previously)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.5k
- Forks
- 320
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 133
Description
Search before asking
- I have searched the Inference issues and found no similar feature requests.
Question
Hello all, any help on this issue would be great, I am running out of ideas.
I am encountering consistent WebRTC connection failures using the Python inference-sdk streaming API. This setup previously worked without issue, and no intentional changes were made to my code or network configuration.
The failure occurs during ICE negotiation and never progresses to a stable connection. The session transitions from checking → failed almost immediately.
Another datapoint: I can run this just fine if I am leveraging a local inference server.
This issue persists across:
multiple networks (home LAN, direct router connection, mobile hotspot)
different RTSP sources (including Roboflow demo RTSP)
different configurations (including increased processing_timeout)
At this point, it appears to be either:
a regression in the WebRTC client stack (inference-sdk / aiortc / aioice)
or a backend-side change affecting WebRTC session establishment
Environment
aioice==0.10.2
aiortc==1.14.0
av==14.2.0
inference-sdk==1.2.0
pillow-avif-plugin==1.5.5
Reproducible Code
I am using the code from suggested deployment code from the Roboflow Web interface
from inference_sdk import InferenceHTTPClient
from inference_sdk.webrtc import RTSPSource, StreamConfig
client = InferenceHTTPClient.init(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
source = RTSPSource("rtsp://demo.roboflow.com:8554")
config = StreamConfig(
stream_output=[],
data_output=["predictions"],
processing_timeout=3600,
requested_plan="webrtc-gpu-medium",
requested_region="us"
)
session = client.webrtc.stream(
source=source,
workflow="detect-count-and-visualize-4",
workspace="vigilare-ai",
image_input="image",
config=config
)
@session.on_data()
def on_data(data, metadata):
print("received data")
session.run()```
### Additional
_No response_
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reproducible Python entry point using client.webrtc.stream(...) and compare the serverless setup with the local inference server. Inspect the ICE transition from checking to failed across the listed package versions and networks; done means the session establishes a stable WebRTC connection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- audio-video-rtc, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100