roboflow / roboflow/inference

WebRTC ICE connection fails immediately (checking → failed) on Python SDK (worked previously)

Open
#2,176 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.