Skip to content

Add live-streaming load-test example + expose RTP timestamp#1177

Draft
cloudwebrtc wants to merge 1 commit into
mainfrom
duan/live-streaming-load-test
Draft

Add live-streaming load-test example + expose RTP timestamp#1177
cloudwebrtc wants to merge 1 commit into
mainfrom
duan/live-streaming-load-test

Conversation

@cloudwebrtc

Copy link
Copy Markdown
Contributor

New examples/live_streaming binary: one publisher publishes a scrolling simulcast H.264 test-pattern track (no camera needed); N subscribers (40 by default) join at random times within a short window and immediately request the highest simulcast layer. Publisher and subscribers run as separate subcommands (publisher / subscriber) or together (all); each subscriber runs on its own OS thread with a dedicated tokio runtime.

To let the subscriber report the RTP timestamp of its first frame, add an rtp_timestamp: u32 field to VideoFrame, populated from the received frame in the native video sink (0 on locally-captured frames). Update the other VideoFrame construction sites accordingly.

Before you submit your PR

Make sure the following is true before submitting your PR:

  • I have read the contributing guidelines and validated that this PR will be accepted.
  • I have read and followed the principles regarding breaking changes, testing, and code quality.

PR description

Describe the changes in this PR. Explain what the PR is meant to solve and how to reproduce the issue in the first place.

Breaking changes

If this PR introduces breaking changes, list them here and document the rationale for introducing such a change.

MSRV

If the PR modifies the crate's MSRV (Minimum Supported Rust Version), document it here.

Testing

Ideally, unit test the code you add, but ensure you're not repeating existing test cases. Use as many already written scaffolding, utilities as possible; write your own, when needed. If external services, APIs, tokens are required (e.g., running an LK server instance), provide the necessary information. Make sure your tests perform useful, context-aware assertions and do not simply emulate "happy paths".

Async

We want the project to be runtime-agnostic, so please reuse what's already in livekit-runtime and feel free to add anything missing. It's ok to use Tokio directly, when writing unit tests, if necessary. When testing, do not use artificial delays for the state to "catch up"; instead, respect the event flow and subscribe properly using channels or other mechanisms.

New `examples/live_streaming` binary: one publisher publishes a scrolling
simulcast H.264 test-pattern track (no camera needed); N subscribers (40 by
default) join at random times within a short window and immediately request the
highest simulcast layer. Publisher and subscribers run as separate subcommands
(`publisher` / `subscriber`) or together (`all`); each subscriber runs on its
own OS thread with a dedicated tokio runtime.

To let the subscriber report the RTP timestamp of its first frame, add an
`rtp_timestamp: u32` field to `VideoFrame`, populated from the received frame in
the native video sink (0 on locally-captured frames). Update the other
`VideoFrame` construction sites accordingly.
@github-actions

Copy link
Copy Markdown
Contributor

No changeset found

This PR modifies the following packages but doesn't include a changeset:

Directly changed:

  • libwebrtc
  • livekit
  • livekit-ffi

Click here to create a changeset

The link pre-populates a changeset file with patch bumps for all affected packages.
Edit the description and bump types as needed before committing.

If this change doesn't require a version bump, add the internal label to this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant