https://livekit.io logo
Join Slack
Powered by
# ingress
  • b

    breezy-alarm-70231

    02/27/2025, 7:25 PM
    Hey team, are there any timeouts on a URL Input ingress that will automatically terminate it? We had an event yesterday where two of the files got skipped. Our ingress dashboard shows each of them only ran for 3 seconds, so we have a couple theories that the files couldn't be fetched by the ingress API or there was a transcoding timeout. We didn't receive any errors from the ingress API though, or we aren't logging the correct webhook event(s) to catch that specific scenario. I haven't been able to find any documentation of this timeout functionality either. We verified the two files were available and played correctly when loaded into an HTML audio player, so we aren't sure what else could've caused them to fail in their ingresses. The two ingress IDs are
    IN_hvX4cXjdHrSx
    and
    IN_B7c3CGkx7aGk
    if that helps. cc @full-iron-41629
    t
    • 2
    • 2
  • p

    proud-spring-42526

    03/06/2025, 8:36 PM
    Has anyone been able to get a consistent sub second stream via OBS w/ WHIP ingress? No matter what we do, we always end up observing an increasing latency over time during our streams
    • 1
    • 1
  • b

    brash-optician-30337

    03/12/2025, 5:49 PM
    Hi team, we are trying to create some ingress but we are having the following error:
    Copy code
    ingress stream: Error: Request failed with status 429: Too Many Requests
    The same code was working a couple of days ago, do you know if there is something going on or if our account could had been rate limited or something like that?
    t
    • 2
    • 6
  • a

    agreeable-market-83452

    03/13/2025, 1:04 PM
    Are we able to regenerate our ingress url? We ended up rebranding our company with a different name but the ingress URL is still the old company name. Is it possible to change this?
    t
    • 2
    • 4
  • p

    proud-shoe-41010

    03/14/2025, 1:50 PM
    Hi, Is it possible to test ingress with livekit-server --dev ? ( I have redis installed and I can see from the log that livekit-server is able to connect to it).
  • s

    stocky-megabyte-74523

    03/25/2025, 10:47 AM
    is this ingress? https://livekit-users.slack.com/archives/C07FY8WHGPM/p1742895302079389 in our app we're setting custom properties on participants. however seems like the ingress API does two things that hurt our ability to use it: 1. it replaces the participant and any special attributes we already set on them 2. it doesnt allow setting custom properties in the API are we missing something that could help us show pre-recorded videos as sort of fake/agent participants ?
    t
    • 2
    • 2
  • b

    boundless-fish-41368

    03/27/2025, 5:24 PM
    Hey team, has anyone successfully streamed from OBS to LiveKit WHIP ingress? I'm trying to set up streaming from OBS to LiveKit WHIP ingress, but I have an ICE issue. The SDP offer sent by OBS does not contain any
    a=candidate:
    lines, so LiveKit can't establish a connection. My stream fails with repeated ICE errors like:
    Copy code
    2025-03-27T08:03:30.667Z DEBUG ingress.pion.ice agent.go:465 Pinging all candidates
    2025-03-27T08:03:30.667Z WARN  ingress.pion.ice agent.go:468 Failed to ping without candidate pairs. Connection is not possible yet.
    Has anyone run into this before or found a workaround? Would appreciate any help or direction 🙏 Note: it works fine with https://vdo.ninja/whip
  • w

    wooden-application-80841

    04/10/2025, 9:27 AM
    Hi Team. I am developing my livekit-fastapi-provider API to manage several rooms and ingress to broadcast audio corresponding to an speaker source audio, translated into the required languages. I am using postman to verify endpoints. First, I created this request:
    Copy code
    curl --location '<http://localhost:8086/rooms/create-session-rooms-and-ingress>' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer eyJ0e....M' \
    --data '{
      "session_id": "A1234-5678-9012",
      "required_languages": [
        "es-ES",
        "en-US"
        ],
      "listeners": [],
      "empty_timeout": 300,
      "max_participants": 100
    }
    '
    An I created successfully these rooms and ingress:
    Copy code
    {
      "message": "Salas e ingress procesados exitosamente (creados o reutilizados)",
      "rooms": [
        {
          "name": "A1234-5678-9012_es-ES",
          "sid": "RM_MhoW5fRXGkjm",
          "empty_timeout": 300,
          "max_participants": 100,
          "status": "created",
          "ingress": {
            "ingress_id": "IN_UUfd2dSimgBV",
            "name": "Session A1234-5678-9012 es-ES audio",
            "stream_key": "6**********X",
            "url": "<rtmps://stage>*******-asin0h4m.rtmp.livekit.cloud/x",
            "audio": {},
            "video": {},
            "room_name": "A1234-5678-9012_es-ES",
            "participant_identity": "A1234-5678-9012_es-ES_source",
            "participant_name": "English Audio",
            "reusable": true,
            "state": {
              "audio": {
                "mime_type": "audio/aac",
                "channels": 1,
                "sample_rate": 48000
              },
              "room_id": "RM_NGLiRWLtMTud",
              "started_at": "1744220991955220119",
              "ended_at": "1744221000502521709",
              "resource_id": "RT_YcNAgvieMmdn",
              "updated_at": "1744221000502536121"
            },
            "enable_transcoding": true,
            "status": "existing"
          }
        },
        {
          "name": "A1234-5678-9012_en-US",
          "sid": "RM_8yQm552qbgwe",
          "empty_timeout": 300,
          "max_participants": 100,
          "status": "existing",
          "ingress": {
            "ingress_id": "IN_E2ShA6Jip9ou",
            "name": "Session A1234-5678-9012 en-US audio",
            "stream_key": "X*********p",
            "url": "<rtmps://stage>*******-asin0h4m.rtmp.livekit.cloud/x",
            "audio": {},
            "video": {},
            "room_name": "A1234-5678-9012_en-US",
            "participant_identity": "A1234-5678-9012_en-US_source",
            "participant_name": "en-US Audio",
            "reusable": true,
            "state": {
              "audio": {
                "mime_type": "audio/aac",
                "channels": 1,
                "sample_rate": 48000
              },
              "room_id": "RM_4AY9U66LPgey",
              "started_at": "1744148207194990979",
              "ended_at": "1744148215781279180",
              "resource_id": "RT_BChAKvsvhxo9",
              "updated_at": "1744148215781287162"
            },
            "enable_transcoding": true,
            "status": "existing"
          }
        }
      ]
    }
    Ingress were created as "reusable"=true, and I can not delete them, nor update to "reusable"=false.
    v
    • 2
    • 3
  • w

    wooden-application-80841

    04/10/2025, 9:42 AM
    CASE1: Not able to delete. Using your SDK, inside my API: livekit-api 0.8.2 pypi_0 pypi livekit-protocol 0.9.2 pypi_0 pypi
    Copy code
    ...        
            try:
                # Standard approach
                print(f"Deleting Ingress {ingress_id}")
                await lkapi.ingress.delete_ingress(ingress_id)
                print(f"Ingress {ingress_id} deleted successfully") #Never printed
            except (AttributeError, TypeError):
    ...
    Response:
    {
        "detail": "Error al eliminar el ingress: 401: invalid authorization token"
    }
    Using direct function (below) I get a
    Copy code
    @ingressRoutes.delete("/delete-ingress-direct/{ingress_id}")
    async def delete_ingress_direct(
        ingress_id: str,
        lkapi: LiveKitAPI = Depends(get_livekit_api)
    ):
        try:
            # Obtener configuraciĂłn de LiveKit
            url = lkapi.url
            api_key = lkapi.api_key
            api_secret = lkapi.api_secret
            
            # Generar token JWT manualmente para mayor control
            now = int(time.time())
            exp = now + 60  # 1 minuto de expiraciĂłn es suficiente
            
            # Crear payload con los permisos correctos para ingress
            payload = {
                "iss": api_key,
                "nbf": now,
                "exp": exp,
                "video": {
                    "room": "*",
                    "roomAdmin": True,
                    "roomCreate": True,
                    "roomList": True,
                    "ingressAdmin": True  # Asegúrate de que este permiso esté incluido
                }
            }
            
            # Codificar el token
            token = jwt.encode(payload, api_secret, algorithm="HS256")
            
            # Hacer la solicitud HTTP directamente
            headers = {
                "Authorization": f"Bearer {token}"
            }
            
            delete_url = f"{url}/ingress/{ingress_id}"
    ...
    #Response
    {
        "message": "Ingress IN_UUfd2dSimgBV deleted successfully",
        "status": 200
    }
    I got a "Ingress IN_UUfd2dSimgBV deleted successfully", but if I try to list my Ingress again, no Ingress were deleted (and also I can not create new ones as 'resource_exhausted', 'concurrent ingress sessions limit exceeded'
  • w

    wooden-application-80841

    04/10/2025, 9:48 AM
    CASE2: If I try to update Ingress to make them "reusable"=false,
    Copy code
    curl --location '<http://localhost:8086/ingress/update-ingress>' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer ey...LpM' \
    --data '{
      "ingress_id":"IN_UUfd2dSimgBV",
      "input_type": 0,                   
      "name": "Session A1234-5678-9012 es-ES audio",    
      "room_name": "A1234-5678-9012_es-ES",      
      "participant_identity": "A1234-5678-9012_es-ES_source",  
      "participant_name": "English Audio",             
      "enable_transcoding": true,         
      "reusable": false
    }'
    I got a 200 OK response but the body JSON indicates "reusable": true again
    Copy code
    {
      "message": "Ingress IN_UUfd2dSimgBV actualizado exitosamente",
      "ingress": {
        "ingress_id": "IN_UUfd2dSimgBV",
        "name": "Session A1234-5678-9012 es-ES audio",
        "stream_key": "6**********X",
        "url": "<rtmps://stage>*******-asin0h4m.rtmp.livekit.cloud/x",
        "audio": {},
        "video": {},
        "room_name": "A1234-5678-9012_es-ES",
        "participant_identity": "A1234-5678-9012_es-ES_source",
        "participant_name": "English Audio",
        "reusable": true,
        "state": {
          "audio": {
            "mime_type": "audio/aac",
            "channels": 1,
            "sample_rate": 48000
          },
          "room_id": "RM_NGLiRWLtMTud",
          "started_at": "1744220991955220119",
          "ended_at": "1744221000502521709",
          "resource_id": "RT_YcNAgvieMmdn",
          "updated_at": "1744221000502536121"
        },
        "enable_transcoding": true
      }
    }
    Some help about how to delete these ingress ?
  • s

    some-hydrogen-97536

    04/20/2025, 11:26 PM
    is it possible to stop a stale ingress and room from the livekit dashboard?
  • s

    some-hydrogen-97536

    04/28/2025, 11:14 AM
    is it possible to create an rtmp url without starting an ingress ?
  • q

    quaint-garden-91907

    04/30/2025, 3:09 PM
    Is there a way to know how much delay the ingress module adds? I see it hsa a jitterbuffer, so I guess it can add some queuing ?
    đź‘‹ 1
    b
    • 2
    • 1
  • s

    stale-apple-21922

    05/07/2025, 2:58 AM
    hi Team - curious about relationship between egress quality vs ingress quality vs client rendering. Trying to identify where the source of poor client rendering might be coming from. If client rendering is impaired, but the egress seems fine (demonstrated by recording quality being ok), would that mean the ingress is ok and the issue is the client rendering and connection? Is it possible the ingress to be impaired and the egress look OK because packet jitter could cause rendering issues but not egress recording quality? Any help you could provide would be appreciated, thank you
    t
    • 2
    • 1
  • b

    brainy-printer-76616

    05/09/2025, 9:01 PM
    Hi, I'm exploring using a no-transcode WHIP ingress, but am running into some issues with the logs reporting
    source encoder not ready
    . More info in đź§µ
    l
    • 2
    • 6
  • s

    some-london-88496

    05/16/2025, 2:33 PM
    I can't make ingress helm to properly provision code on kubernetes cluster No logs because pod does not start. No message why the pod is not starting. I see the probe fails but no reason why. Any help? Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 5m10s default-scheduler Successfully assigned livekit/livekit-ingress-6f488455db-pvrf4 to aks-system-38392640-vmss000001 Normal Pulled 4m40s (x2 over 5m9s) kubelet Container image "livekit/ingress:v1.4.3" already present on machine Normal Created 4m40s (x2 over 5m9s) kubelet Created container ingress Normal Killing 4m40s kubelet Container ingress failed liveness probe, will be restarted Normal Started 4m39s (x2 over 5m9s) kubelet Started container ingress Warning Unhealthy 4m10s (x12 over 5m8s) kubelet Readiness probe failed: Get "http://10.244.5.85:7888/": dial tcp 10.244.5.857888 connect: connection refused Warning Unhealthy 4m10s (x6 over 5m) kubelet Liveness probe failed: Get "http://10.244.5.85:7888/": dial tcp 10.244.5.857888 connect: connection refused Warning BackOff 2s (x11 over 2m40s) kubelet Back-off restarting failed container ingress in pod livekit-ingress-6f488455db-pvrf4_livekit(1c7f1daf-5d36-4f49-8ab9-2114deaf008a) config yaml contains: ingress: redis: address: redis-livekit-master.livekit.svc.cluster.local:6379 password: something ws_url: ws://livekit-livekit-server:80 api_key: apisecret api_secret: something logging: level: info health_port: 7888 prometheus_port: 7889 http_relay_port: 9090 rtmp_port: 1935 whip_port: 8080 rtc_config: use_external_ip: true udp_port: 7885 cpu_cost: rtmp_cpu_cost: 2 whip_cpu_cost: 2 whip_bypass_transcoding_cpu_cost: 0.1 loadBalancer: servicePort: 7888 annotations: {}
  • g

    gentle-truck-12665

    05/19/2025, 9:38 AM
    Hello teams, Thanks for the great features you provide. We are using livekit for production and suddenly facing an error when using ingress rtmps and OBS to stream today. Please check this as soon as possible because this issues may affect our customers. 🙏 Below is ingress information, it have been created by nodejs `livekit-server-sdk`'s
    #createIngress()
    (it's a demo project only, I don't want to share our production project publicly):
    Copy code
    "ingressConfig": {
       "ingressId": "IN_2uz5QdaMc7Zi",
       "streamKey": "53tJCTWpek2c",
       "url": "<rtmps://egress-test-fi6ps28f.rtmp.livekit.cloud/x>"
    }
    When I paste url and stream key to OBS, the OBS alert connection failed, error log:
    Copy code
    15:55:46.259: [x264 encoder: 'simple_video_stream'] preset: veryfast
    15:55:46.259: [x264 encoder: 'simple_video_stream'] settings:
    15:55:46.259: 	rate_control: CBR
    15:55:46.259: 	bitrate:      2500
    15:55:46.259: 	buffer size:  2500
    15:55:46.259: 	crf:          23
    15:55:46.259: 	fps_num:      30
    15:55:46.259: 	fps_den:      1
    15:55:46.259: 	width:        1280
    15:55:46.259: 	height:       720
    15:55:46.259: 	keyint:       250
    15:55:46.259: 
    15:55:46.266: libfdk_aac encoder created
    15:55:46.266: libfdk_aac bitrate: 160, channels: 2
    15:55:46.266: [rtmp stream: 'simple_stream'] Connecting to RTMP URL <rtmp://egress-test-fi6ps28f.rtmp.livekit.cloud/x>...
    15:55:46.471: HandShake: client signature does not match!
    15:55:47.713: Unhandled: <rtmp://egress-test-fi6ps28f.rtmp.livekit.cloud/x>:
    15:55:47.713: NetStream.Publish.Failed
    15:55:47.713: RTMPSockBuf_Fill, remote host closed connection
    15:55:47.713: Output 'simple_stream': Reconnecting in 3.04 seconds..
    15:55:47.714: [rtmp stream: 'simple_stream'] Connection to <rtmp://egress-test-fi6ps28f.rtmp.livekit.cloud/x> failed: -3
    15:55:49.353: ==== Streaming Stop ================================================
    16:08:48.362: org.freedesktop.portal.Settings version 1 does not support ReadOne
    16:08:48.363: org.freedesktop.portal.Settings version 1 does not support ReadOne
    16:09:12.777: libfdk_aac encoder destroyed
    16:09:12.779: Settings changed (stream 1, outputs)
    When I tried to change the url to
    <rtmp://egress-test-fi6ps28f.rtmp.livekit.cloud/x>
    (rtmps -> rtmp), OBS and ingress works. I'm looking forward to here from you. Thank you.
    r
    d
    • 3
    • 5
  • b

    bland-jewelry-92773

    05/20/2025, 3:53 PM
    Hello devs, i have empty ingress showing in terminal i just delete all but the livekit dashboard showing it idk why? and it showing the past connection and past ingress data which i already deleted. It's not happening on realtime or live. There is huge delay gap.
  • w

    wide-breakfast-11789

    05/21/2025, 7:53 PM
    Hey there, Hope everyone is doing well. I'm looking for a bit of help trying to understand limits with NextJS and convex.dev.
    Copy code
    concurrent ingress sessions limit exceeded
    I keep running into this issue when trying to generate a token. Is there a way to get around this?
  • l

    limited-plumber-57970

    06/13/2025, 6:21 PM
    Hey all, is anyone using a docker image hosted on a container registry that contains both the LiveKit CLI and a feature rich GStreamer installation? I'm looking for an environment where I can run a simple shell script that will generate an RTMP URL from an
    ingress.json
    + then use it to spin up a simple
    gst-launch-1.0
    pipeline that pulls MJPEG/RTSP, transcodes it, and then sends to ingress.
    r
    • 2
    • 1
  • f

    freezing-wolf-7180

    06/17/2025, 11:26 AM
    Hi, we’re using Twilio (SIP/trunk) and CallHippo to dial into LiveKit rooms, but our TTS reply “Hello, thanks for calling” gets cut off—the first few words are missing when the agent start speaking, and the bot only starts speaking after a delay, with the first few words cut off. We call:
    Copy code
    await session.start(...)
    await session.generate_reply(user_input="Hello")
    Question: What’s the best way to guarantee the full greeting plays? Should we: • Delay
    generate_reply()
    , • Wait for a LiveKit/Twilio event (like audio bridge or subscription ready), Thanks!
    r
    h
    • 3
    • 7
  • e

    echoing-glass-72062

    06/23/2025, 5:28 PM
    Is it possible to create an Egress to Ingress Bridge between two LiveKit instances?
    r
    • 2
    • 5
  • m

    miniature-spring-29693

    06/23/2025, 6:28 PM
    Hello team! I'm an avid user of LiveKit - I'm on the ship plan, ad we're using 60 concurrent active ingresses per day to stream in and out of our systems. We're scaling our systems up now, and we're going to need more than 100 concurrent ingresses. It is my understanding that the enterprise plan offers unlimited concurrent ingresses. Just curious about the Scale plan? I see contradictory documentation online I see unlimited here and 100 here. What options do we have?
    🎯 1
    r
    • 2
    • 6
  • b

    bumpy-leather-73255

    06/28/2025, 7:23 PM
    Hello everyone, does ingress support av1 codec from OBS? If so, how should I enable it? I configured my room to accept av1 codec but when I stream from OBS to the whip endpoint, only H264 is successful. I would get a WARN ingress service/service.go:174 ingress failed {"nodeID": "NE_hgyfpduiDe2L", "error": "unsupported format for the source media"} error either using h265 or av1.
    t
    • 2
    • 1
  • g

    gentle-truck-12665

    07/02/2025, 3:09 AM
    Hello teams. We are using Ingress with RTMPs to implement livestreaming functionality, and we are encountering an issue with the "Tape Recorder Effect", where the viewer's screen lags behind the broadcaster's screen. When the broadcaster's network connection is unstable, this delay increases and accumulates over the course of the livestream, resulting in a delay of 50–60 seconds after just around 2 hours of streaming. The only solution we currently know is to reset the streaming session. We would like to know if there are any ways to improve or mitigate this issue. I'm looking forward to here from you. Thank you.
    đź‘€ 1
    t
    • 2
    • 8
  • c

    cold-angle-82013

    07/04/2025, 6:24 AM
    Hello, I am trying to set up SIP Ingress on my LiveKit Cloud project. I am the project admin, but the 'Ingress' option is not visible in the left-hand navigation menu of my project dashboard. Could you please check my project and enable this feature for me? My Project ID is: p_68yjrpvagdp
    t
    • 2
    • 1
  • r

    ripe-psychiatrist-10917

    07/10/2025, 6:45 PM
    Hello, wea are using WHIP ingresses for our video feeds into livekit. Worked fine. Today we are seeing 502/503 errors while hitting ingress endpoints. E.g.
    <https://test-camera-stream-gd7ljdv1.whip.livekit.cloud/w/SPzb9xihZATE>
    project url:
    <wss://test-camera-stream-gd7ljdv1.livekit.cloud>
  • h

    hallowed-breakfast-84608

    07/14/2025, 2:58 PM
    Hi, maybe someone has configured Livekit and Livekit Ingress locally for streaming via RPTM (OBS) ? I don't understand how to connect locally to streaming. OBS starts streaming and transmits to local server, but through JS client error " could not establish pc connection" All deployed in docker-compose via bridge network.
    e
    • 2
    • 1
  • e

    echoing-glass-72062

    07/16/2025, 6:35 PM
    Are there any thoughts of SRT Ingress? We were able to get a solid pipeline to create an Egress-to-Ingress Bridge with RTMP, but really desire to do this over SRT. Largely because SRT is a UDP based protocol, and RTMP is TCP based.
  • h

    hundreds-battery-20727

    07/17/2025, 1:01 AM
    Hi, what are some typical use cases for ingress?