Releases: ppcdn-org/ppobs
Releases · ppcdn-org/ppobs
Release list
ppobs v32.1.2-rc003
ppobs v32.1.2-rc003
Hardens the HEVC/H264 multitrack feature introduced in rc002 (mostly the SRT side, which shipped with several real bugs), adds a dedicated SRT service option, and adds ppobs device authentication.
HEVC/H264 Multitrack over SRT
- Fixed: enabling multitrack over SRT failed outright ("MPEG-TS simulcast requires H264 for every video encoder") - a pure HEVC ladder is now accepted, mixed H264+HEVC in one connection is still rejected
- Fixed: the H264 connection could publish with no full-resolution base layer when the main stream encoder was HEVC (a 3-layer config only reached the server as 2 tracks), affecting both Advanced and Simple output modes
- Fixed: the HEVC ladder could end up sharing the H264 connection's main encoder instead of getting its own, breaking the two-connection split
- Fixed: HEVC frames published over SRT were missing their timestamp SEI, so P2P delay showed N/A on the HEVC path while H264 worked normally
- Fixed: the H264 ladder silently inherited the HEVC encoder's bitrate setting, so both codecs published at the same total bitrate regardless of what was configured for each
- Fixed: the live traffic stats (status bar kbps, Stats window) only counted the H264 connection's bytes sent, undercounting total upload by the entire HEVC ladder whenever multitrack was active over SRT
- Fixed: an integer-division bug made the SRT session summary always report 0.0% for retransmission/drop rates below 100%
HEVC/H264 Multitrack over WHIP
- Fixed: an HEVC main encoder plus a 3-layer simulcast ladder could publish an SDP offer with 4 rid attributes instead of 3, which the server rejects
- Fixed: the H264 base layer could land in an encoder slot the server-side offer parser never reaches, silently dropping it from the offer
- Added: upfront validation that rejects a publish URL/config combination that can't actually work (e.g. multitrack against a codec-pinned URL, or a stream encoder codec that doesn't match a pinned URL) instead of looping through silent reconnects
- Added: both codec URLs are now derived automatically from the one configured stream URL instead of requiring the user to hand-write the H264 path
- Fixed: a service-settings aliasing bug that made both the H264 and HEVC connections publish to the same (HEVC) path
Streaming Service Selection
- Added a dedicated "SRT" entry in the service dropdown (previously only reachable via "Custom..." with a manually-typed
srt://URL), positioned before WHIP and Custom - SRT shares all of Custom's existing configuration (server/key/auth fields, PPCenter integration, simulcast/multitrack support) under the hood
Device Authentication
- ppobs now registers this machine's hardware identity (disk serial or LAN MAC) with ppcenter before publishing and uses the server-assigned device ID for the publish request, falling back to the previous random UUID if registration fails
Stability
- Fixed a crash on shutdown (dangling pointer) that could occur when loading H264 encoder settings in multitrack mode
- Fixed a crash in SRT/MPEG-TS timestamp handling caused by unvalidated codec/time-base state
- Fixed Advanced output ignoring encoder settings saved in the Settings dialog for several encoder types, so streaming could silently run on stale bitrate/keyint values instead of what was configured
ppobs v32.1.2-rc002
ppobs v32.1.2-rc002
This version includes enhanced WHIP/P2P streaming, HEVC/H264 multi-track simultaneous broadcast, SRT simultaneous broadcast, optimized live streaming settings, improved image quality processing capabilities, and stability fixes.
WHIP / P2P Streaming
- Added WHIP HEVC + H264 multi-track streaming
- H264 and HEVC use separate WHIP sessions
- Each session carries audio separately
- Supports multi-layer Simulcast for H264/HEVC
- Automatically matches the corresponding vendor's H264/HEVC encoder
- Provides explicit prompts when the HEVC encoder is unavailable
- Added WHIP P2P NAT detection
- Detects the publisher's NAT type before streaming
- Persistentizes device ID
- Automatically downgrades to Edge-only when NAT detection fails, without blocking streaming
- Added PPCenter STUN service deployment and configuration
- Enhanced P2P WebSocket signaling security
- Forces remote signaling to use
wss:// ws://only allows localhost/loopback- Fixed IPv6 loopback address handling
- Fixed WHIP connection establishment, reconnection, and termination processes
- Faster disconnection recovery
- Added reconnect watchdog
- Limit reconnection frequency to avoid duplicate reconnection threads
- Fixed data transmission race condition when connection is closed
- Fixed residual reconnection after degrade WebSocket stops
- Fixed issue where the encoder remained active after WHIP output failure
- Fixed issue where WHIP output was stuck at 0 bitrate
- Support for
{ppcenter_appid}expansion - WHIP endpoint supports App ID placeholders
- Custom SRT URL's
streamidalso supports App ID placeholders
Simulcast / SRT
- Added single SRT connection to carry multiple Simulcast streams
- Each video encoder outputs an independent H264 elementary stream
- Support for routing video packets by
track_idx - Each layer independently waits for a keyframe before starting transmission
- Preserves the high-to-low Simulcast hierarchy order
- Creates independent FFmpeg
AVStreamand encoding state for each layer - SRT Simulcast is limited to a maximum of 4 layers.
- WHIP Simulcast is also limited to a maximum of 4 layers.
- SRT multi-channel video requires all video encoders to be H.264.
- Fixed compatibility issues with the first H.264 Access Unit of the hardware encoder.
- Supports valid Annex-B leading zeros.
- Supports 4-byte AVCC to Annex-B conversion.
- Correctly cleans up FFmpeg/MPEG-TS state when initialization fails.
- Custom services no longer display inapplicable independent "Multitrack Video Settings".
- Retains the unified "Simultaneous Playback Configuration" entry for custom services and WHIP.
Push Streaming Limitations
WHIP push streaming has added hard limits, applicable to all startup methods and reconnection paths:
- Maximum landscape resolution:
3840x2160 - Maximum portrait resolution:
2160x3840 - Maximum FPS:
60 - Maximum video bitrate:
10000 Kbps - H264, HEVC, and all Simulcast layers are validated separately.
- Output stops and a clear error is logged when limits are exceeded.
- Settings interface provides advance warning of resolution and FPS exceeding limits.
Live Streaming Settings
- Unified configuration items for custom services and WHIP:
- Endpoint
- Simultaneous Broadcast
- Authentication Center
- Interval Live Streaming Configuration
- Custom and WHIP endpoints are remembered separately.
- Endpoint addresses will not be used interchangeably when switching between the two services.
- Authentication center configuration is also displayed for custom services.
Custom service authentication center fields are saved to the corresponding service settings.
Custom services retain the user-selected audio encoder. - No longer automatically switching or hiding encoders such as Opus based on protocol recommendations.
- Simultaneous broadcast encoders are uniformly limited to 4 layers.
Image Quality and Video Processing
- Added Clarity filter
- Added Temporal Denoise filter
- Added basic Beauty filter
- Added face beautification/stylization capabilities
- Added ROI-Related Capabilities
- Manual ROI selection
- Decoupling ROI from WHIP service settings
- Moving ROI settings to the video settings page
- Adding live streaming quality score
- Calculating video quality score and PSNR
- Supporting quality degradation alerts
- Supporting quality score preview overlays
- Adjusting quality processing defaults and UI text
- Enhancing QSV/hardware encoder bitrate cap handling
Network and Clock
- Adding Windows network adapter type recognition
- Ethernet
- Wi-Fi
- Cellular
- Other/Unknown
- Adding the following to RTMP and WHIP logs:
- Network interface card description
- Network interface card type
- Uplink and downlink speeds
- Adding active network adapter logs at startup
- Improved NTP clock calibration
- Anchoring the calibrated clock to the system wall time
- Improved streaming timestamp stability
ppobs 32.1.2-rc001
What's new since v32.1.2-rc1
WHIP Simulcast per-layer configuration
- Per-layer "Follow Main" resolution/bitrate, with a proportional-to-pixel-area fallback formula instead of an unrelated per-slot halving.
- Follow Main state is no longer persisted as a stale override while checked, and live-refreshes (width/height/bitrate) when entering the Stream page or right after a Video settings Apply, without discarding unsaved edits.
- mainBitrate is read from whichever output mode (Simple/Advanced) is actually active. Total Layers UI cap raised from 4 to 5.
- ppcenter_stream is parsed from the WHIP server URL's path instead of a separate, redundant input field.
Scheduled live broadcasting
- Free-form time slots with per-slot weekday repeat, including slots that wrap past midnight (e.g. 22:00-06:00) - overlap validation and day-of-week matching both account for the wrapped tail landing on the next day.
- A master feature-enable switch, separate from whether a schedule is currently running, with the control-panel button disabled/tooltipped accordingly. Manual streaming and scheduled streaming are mutually exclusive in both directions.
- Startup safety: the schedule switch is force-cleared and initialization is deferred until after the main window is shown, so a schedule left running from a previous session can never auto-start streaming.
WHIP reliability
- 401/403/404 on the WHIP POST is treated as a permanent rejection (bad key/path/permissions) instead of retrying forever; other failures still signal a normal reconnectable disconnect.
- WHIP reconnect timing (ICE recovery wait, linear reconnect backoff) is now configurable from Settings > Output > Advanced instead of hardcoded.
Misc
- Language list pins English/Simplified/Traditional Chinese to the top.
- Title bar shows a literal version string sourced from the VERSION file at build time.
- Help > Release Notes points at this repo instead of upstream OBS.
Portable zip is attached below; debug symbols are archived separately and not attached to this release.