Skip to content

H265 RTP stream works with RecorderEndpoint and RtpEndpoint→RtpEndpoint, but fails with WebRtcEndpoint: "Payloader not found for media 'video'" #129

@Yonge2

Description

@Yonge2

Prerequisites

These are MANDATORY, otherwise the issue will be automatically closed.

Issue description

When H265 support is enabled in Kurento (ENABLE-H265 = true), an H265-encoded video is transmitted to Kurento Media Server via an RTP Endpoint configured with sendonly. This setup works correctly — Kurento receives the stream and recording via RecorderEndpoint works fine.

However, if we connect this RTP Endpoint to a WebRtcEndpoint, and a browser client (Chrome) tries to view the stream with a recvonly SDP offer, the video does not appear. ICE negotiation and SDP negotiation are successful, and Chrome supports H265 decoding.

The following Kurento log appears at the moment the RTP stream is being relayed to the WebRTC endpoint:

2025-06-04T10:13:52,216833 16978 0x00007d6a4a3f36c0 warning basertpendpoint kmsbasertpendpoint.c:1577 kms_base_rtp_endpoint_set_media_payloader() <kmswebrtcendpoint0> Payloader not found for media 'video'

This indicates that the payloader for media "video" is not found, even though the SDP negotiation includes H265 and the browser supports H265 decoding.

The same stream works when connected to a RecorderEndpoint, and the recorded video is valid — suggesting that the RTP sender and Kurento H265 decoder are both functioning properly. The problem occurs only when relaying the stream via WebRTC to the browser.

Context

Our goal is to send H265-encoded RTP streams into Kurento and deliver them via WebRTC to Chrome browsers. RTP recording works, but playback via WebRTC fails due to missing payloader logic.

How to reproduce?

  1. Enable H265 in Kurento (ENABLE-H265=true)
  2. Stream H265 RTP video into RTP Endpoint (sendonly)
  3. Connect to RecorderEndpoint → verify recording works
  4. Connect to WebRtcEndpoint
  5. Use Chrome browser with H265 recvonly SDP offer
  6. Observe no video is received despite successful SDP and ICE negotiation

Expected & current behavior

Expected:
The H265 stream should be delivered to the browser via WebRTC.

Current:
No packets are delivered to the browser. Kurento logs indicate:
Payloader not found for media 'video'.

(Optional) Possible solution

There may be a missing mapping between H265 codec and a payloader element within Kurento's WebRTC pipeline. A dynamic H265 payloader setup might be required when bridging RTP input to WebRTC output.

Info about your environment

  • RTP Endpoint (sendonly) is receiving H265
  • Connected to RecorderEndpoint → video saved properly
  • WebRtcEndpoint → browser fails to receive stream
  • Chrome SDP includes support for H265
  • Kurento logs show "Payloader not found" when trying to send RTP stream to WebRTC endpoint

About Kurento Media Server

About your Application Server

  • Programming Language: Node.js
  • Kurento Client version: 7.2.0

About end-user clients

  • Device(s): Mac
  • OS(es): iOS 14.2
  • Browser(s): Chrome136

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions