Why 1.0?
This software now supports all the main streaming protocols (SRT / WebRTC / RTSP / RTMP / LL-HLS), a wide range of codecs, a series of innovative protocol-codec combinations (for instance HLS + AV1), and is deployed in production environments. The main objective of the project has been achieved, that is to provide a routing solution for real-time media streams to any user, from householders that want to manage their video feeds to developers that need to route media streams to and from microservices.
There are a couple of secondary features that will be certainly developed in the near future (native recording, native scalability, both can already be achieved by using external integrations) but other than that the focus will be on fixing eventual issues related to the existing features.
New features
SRT
- support publishing, reading, proxying with SRT (#2068)
WebRTC
- support proxying WebRTC streams with WHEP (#2142)
HLS
UDP
- support reading MPEG-1 tracks (#2147)
General
Fixes and improvements
RTSP
- support G726 format (bluenviron/gortsplib#330)
- fix race condition in WritePacketRTP() (bluenviron/gortsplib#334)
- fix SDP unmarshaling with Vurix NVR (#2128)
- add VP8/VP9 limits
HLS
- show IP in logs in case of failed authentication (#2099)
- prevent brute-force attacks by waiting before sending responses (#2100)
- reply status code 204 to OPTIONS requests (#2141)
- prefer Opus tracks to MPEG-4 tracks (#2158)
- fix parsing decimal EXT-X-TARGETDURATION (bluenviron/gohlslib#55)
- fix parsing EXT-X-STREAM-INF with spaces (bluenviron/gohlslib#56)
- fix parsing playlists without trailing newline (bluenviron/gohlslib#58)
- add Cache-Control header to all responses
- prepend prefix to segments. . This is needed to prevent usage of cached segments from previous muxing sessions
WebRTC
- show both IP and port during session creation and in API (#2096)
- send session ID to external auth server (#1981) (#2098)
- show IP in logs in case of failed authentication (#2099)
- prevent brute-force attacks by waiting before sending responses (#2100)
- speed up track detection (#2105)
- fix race condition when broadcasting RTP packets (#2117)
- reply status code 204 to OPTIONS requests (#2141)
UDP
- support using domain names instead of IPs (#2150)
API
- fix crash when calling /v1/webrtcsessions/list just after session creation (#2097)
- add transport to RTSP sessions (#2151)
- remove sourceReady from docs (#2163)
General
- return an error in case the random number generator fails (#2120)
- remove warning when decoding VP8 or VP9 (#2159). . avoid printing 'received a non-starting fragment without any previous starting fragment'
- disable check for missing key frames (#1904) (#2161)
- rename disablePublisherOverride into overridePublisher (#2164)
- remove 'disable' from names of configuration parameters (#2101)
- fix crash in case of specially-crafted HTTP requests (#2166) (#2169)
- Add video player options via query string (#2145)
- mpegts: fix panic with specially-crafted strings; add fuzzing (bluenviron/mediacommon#29)
- h264, h265: raise MaxNALUSize (bluenviron/mediacommon#30)
- h264, h265: rename MaxNALUSize to MaxAccessUnitSize and apply to entire access unit (bluenviron/mediacommon#36)
- h264: fix 'invalid POC' error (bluenviron/mediacommon#55)
Dependencies
- build(deps): bump github.com/pion/rtp from 1.7.13 to 1.8.0 (#2091)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.12 to 3.2.13 (#2092)
- build(deps): bump github.com/gookit/color from 1.5.3 to 1.5.4 (#2089)
- build(deps): bump github.com/abema/go-mp4 from 0.10.1 to 0.11.0 (#2112)
- build(deps): bump github.com/pion/rtp from 1.8.0 to 1.8.1 (#2129)
- build(deps): bump golang.org/x/net from 0.12.0 to 0.13.0 (#2139)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.13 to 3.2.14 (#2140)
- build(deps): bump golang.org/x/term from 0.10.0 to 0.11.0 (#2148)
- build(deps): bump golang.org/x/net from 0.13.0 to 0.14.0 (#2170)
- build(deps): bump github.com/pion/ice/v2 from 2.3.9 to 2.3.10 (#2171)
- build(deps): bump github.com/asticode/go-astits