Two edge-cluster regressions surfaced when validating an RTMP origin/edge setup. Each is a small, surgical fix in its own commit. - **HTTP-FLV play on edge always 404'd.** `SrsHttpStreamServer::assemble()` registered the dynamic matcher only when the mux cast was `NULL` (inverted guard), so the matcher was never wired up. On edge the FLV mount is created lazily by the dynamic matcher, so every HTTP-FLV client got 404. Invert the guard to register when the mux is valid, mirroring the destructor. (`trunk/src/app/srs_app_http_stream.cpp`) - **RTMP players that join an edge stream after the first player fail to decode.** After v7.0.94 (#4513) stopped creating `SrsOriginHub` on edge, the `hub_active` gate in `SrsLiveSource::consumer_dumps()` always evaluated false on edge. That gate guards the dump of cached `onMetaData` + AVC sequence header + AAC sequence header + GOP cache to a new consumer. Result: the first player attaches before the edge-pull starts and gets headers via the live fan-out, but every subsequent player gets coded payload with no codec config and ffmpeg aborts with `dimensions not set` / `Could not write header`. Fall back to the meta cache state when `hub_` is `NULL`, so the dump path runs once the edge-pull has populated the cache. (`trunk/src/app/srs_app_rtmp_source.cpp`) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
877 B
Plaintext
40 lines
877 B
Plaintext
|
|
# Edge for the proxy+edge E2E test (skills/srs-develop).
|
|
# Registers with the proxy via heartbeat, and in mode remote forwards publishes
|
|
# to and pulls plays from origin-for-edge.conf (RTMP :19360).
|
|
|
|
max_connections 1000;
|
|
pid objs/edge-for-proxy.pid;
|
|
daemon off;
|
|
srs_log_tank console;
|
|
|
|
rtmp {
|
|
listen 19361;
|
|
}
|
|
http_server {
|
|
enabled on;
|
|
listen 8091;
|
|
dir ./objs/nginx/html;
|
|
}
|
|
http_api {
|
|
enabled on;
|
|
listen 19861;
|
|
}
|
|
heartbeat {
|
|
enabled on;
|
|
interval 9;
|
|
url http://127.0.0.1:12025/api/v1/srs/register;
|
|
device_id edge-for-proxy;
|
|
ports on;
|
|
}
|
|
vhost __defaultVhost__ {
|
|
cluster {
|
|
mode remote;
|
|
origin 127.0.0.1:19360;
|
|
}
|
|
http_remux {
|
|
enabled on;
|
|
mount [vhost]/[app]/[stream].flv;
|
|
}
|
|
}
|