Cherry-pick of the v8.0.2 fix to the 7.0 release line. Two edge-cluster regressions surface when validating an RTMP origin/edge setup: - **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>
28 lines
436 B
Go
28 lines
436 B
Go
// Copyright (c) 2026 Winlin
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
package version
|
|
|
|
import "fmt"
|
|
|
|
func VersionMajor() int {
|
|
return 7
|
|
}
|
|
|
|
// VersionMinor specifies the typical version of SRS we adapt to.
|
|
func VersionMinor() int {
|
|
return 0
|
|
}
|
|
|
|
func VersionRevision() int {
|
|
return 150
|
|
}
|
|
|
|
func Version() string {
|
|
return fmt.Sprintf("%v.%v.%v", VersionMajor(), VersionMinor(), VersionRevision())
|
|
}
|
|
|
|
func Signature() string {
|
|
return "SRSX"
|
|
}
|