Skip to content

ppobs Publisher Client Guide

ppobs is PPCDN's publishing client built on OBS Studio. On top of standard OBS it integrates PPCDN's low-latency WHIP / SRT ingest, multi-layer simulcast, H264 + HEVC multitrack publishing and weak-network adaptation. Enter the console's appId / appSecret in the Stream settings and you are live — no manual stream URL required.

Audience: streamers / integrators who need to go live on PPCDN. This page covers "download + configure + start publishing" only.

1. Capabilities

Capability Description
WHIP / SRT ingest The stream URL and auth token are issued by ppcenter for the protocol you pick; the protocol is switchable
Simulcast layers Up to 4 quality layers; the server switches layers seamlessly based on each viewer's network
H264 + HEVC multitrack Publishes two independent WHIP sessions (each with audio); a clear warning appears when the HEVC encoder is unavailable
Weak-network adaptation The server steps down/up automatically based on unrecoverable loss / bandwidth, recovering step by step
Reconnect A session is considered dead when no data is sent for a while and reconnects automatically (configurable threshold) — no manual re-publish
P2P publishing Probes NAT type before publishing; on failure it degrades to Edge-only without blocking the stream
End-to-end latency marks Timestamps embedded in the bitstream let the player measure end-to-end latency

Limits

  • Landscape max 3840x2160, portrait max 2160x3840
  • Max 60fps
  • Max 10000 Kbps

2. Download & install

  1. Open the ppobs releases.
  2. Download the package for your OS:
  3. Windows: the .exe installer or the .zip portable build
  4. macOS: .dmg
  5. Linux: pick the package for your distribution
  6. Run the installer and launch ppobs.

ppobs is a fork of OBS. The first-run wizard, scenes / sources / mixer all work exactly like standard OBS; only Settings → Stream is wired for PPCDN.

3. Get your appId and appSecret

  1. Sign in to the PPCDN console (https://pp-cdn.org).
  2. Create an App in the console to get its appId and appSecret.
  3. You do not need to assemble a stream URL by hand: ppobs uses appId / appSecret to obtain the current best Origin ingest URL and auth token from ppcenter.

appSecret is effectively your publishing credential. Never post it on public pages, in chat, or in screenshots; if you suspect a leak, reset it in the console and reconfigure.

  1. Open Settings → Stream.
  2. Set Service to PPCDN.
  3. Enter the App's appId and appSecret.
  4. (Optional) under Simulcast settings, choose:
  5. Ingest protocol: WHIP or SRT. WHIP is recommended by default (lower latency); choose SRT when your weak uplink needs stronger retransmission robustness.
  6. Simulcast layers: up to 4. More layers let the server pick a finer-grained quality per viewer.
  7. Multitrack: publishes both an H264 and an HEVC track (requires an HEVC-capable encoder). > SRT multitrack requires every layer's encoder to be H264; WHIP multitrack > supports H264 + HEVC.
  8. Click Start Streaming.

If the network drops while publishing, ppobs reconnects automatically once the session is deemed dead — no need to click start again.

5. Encoder recommendations (low latency)

Encoding settings add directly to end-to-end latency. For low-latency scenarios:

Setting Suggested Notes
Encoder H.264 or HEVC HEVC has better quality per bitrate but needs player support (pplayer detects it automatically)
Rate control CBR Avoids stutter/buffer jitter from bitrate swings
Keyframe interval (GOP) 1–2 s Too long slows start-up and layer switching
B-frames Off B-frames add reordering delay
Preset / tune Low latency (zerolatency) Disables look-ahead buffering
Frame rate 30 fps (60 for some games) —
Resolution 1080p (or as needed) Within the limits above

6. Manual / advanced publishing

If you don't use ppobs' one-click PPCDN integration, you can take the ingest address and publish with standard OBS (or any WHIP/SRT client). The ingest address and token are issued on demand by the ppcenter publish API:

POST https://api.pp-cdn.org/v1/publish/requests
Content-Type: application/json

{
  "appId": "<your appId>",
  "appSecret": "<your appSecret>",
  "streamName": "<stream name>",
  "protocol": "whip"        // or "srt"
}
  • protocol defaults to whip.
  • Returns whipUrl + bearerToken (WHIP), or ppcdnPublishEndpoint (SRT, host[:port]).
  • SRT URL template:
srt://{ppcdnPublishEndpoint}?streamid=publish:{appId}/{streamName}
  • WHIP URL is https://{origin}/{appId}/{streamName}/whip, with header Authorization: Bearer <bearerToken>.

This is a server-side API — use appSecret only on your own server, never in a front-end page.

7. FAQ

Q: Publishing reports an auth / credential error? Check that the App's appId / appSecret were copied completely and that the account is not in arrears; after resetting appSecret, update it in ppobs too.

Q: The video publishes but viewers can't see it? Make sure you're using the playback (WHEP) URL, not the ingest URL — see the pplayer integration guide.

Q: HEVC multitrack is on but there's no picture? When the browser / player doesn't support HEVC it falls back to the H264 track automatically; verify on a supported browser, or turn multitrack off and publish H264 only.

Q: Publishing stutters on a weak uplink? Switch the ingest protocol to SRT and lower the bitrate / layer count a bit; the server also steps quality down automatically based on loss and bandwidth.

Q: Do I have to fill in the stream URL myself? No. Choose the PPCDN service and enter appId / appSecret; the URL and token are issued by ppcenter automatically.