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 max2160x3840 - Max
60fps - Max
10000 Kbps
2. Download & install¶
- Open the ppobs releases.
- Download the package for your OS:
- Windows: the
.exeinstaller or the.zipportable build - macOS:
.dmg - Linux: pick the package for your distribution
- 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¶
- Sign in to the PPCDN console (https://pp-cdn.org).
- Create an App in the console to get its
appIdandappSecret. - You do not need to assemble a stream URL by hand: ppobs uses
appId/appSecretto obtain the current best Origin ingest URL and auth token fromppcenter.
appSecretis 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.
4. Configure publishing (recommended: the PPCDN service)¶
- Open Settings → Stream.
- Set Service to
PPCDN. - Enter the App's
appIdandappSecret. - (Optional) under Simulcast settings, choose:
- Ingest protocol:
WHIPorSRT. WHIP is recommended by default (lower latency); choose SRT when your weak uplink needs stronger retransmission robustness. - Simulcast layers: up to 4. More layers let the server pick a finer-grained quality per viewer.
- 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.
- 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"
}
protocoldefaults towhip.- Returns
whipUrl+bearerToken(WHIP), orppcdnPublishEndpoint(SRT,host[:port]). - SRT URL template:
srt://{ppcdnPublishEndpoint}?streamid=publish:{appId}/{streamName}
- WHIP URL is
https://{origin}/{appId}/{streamName}/whip, with headerAuthorization: Bearer <bearerToken>.
This is a server-side API — use
appSecretonly 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.