New features
General
RTMP
- support publishing H265 and AV1 tracks with Enhanced RTMP (#1393) (#1446) (#1621) (#1756) . This restores compatibility with OBS 29.1.
- support publishing, reading and proxying MPEG-2 audio (MP3) tracks (#1102) (#1736)
WebRTC
- support publishing streams with WebRTC and the WHIP specification (#1659) (#1786). You can publish streams by either opening
http://localhost:8889/mystream/whip
. - support reading streams with WebRTC and the WHEP specification (#1800). You can read streams by either opening
http://localhost:8889/mystream
inside the browser or using the WHEP URLhttp://localhost:8889/mystream/whep
. - support reading AV1 tracks with WebRTC (#1768)
API
- add pagination to all /list endpoints (#1808) (BREAKING CHANGE)
Fixes and improvements
General
- change repository owner (#1801)
- print warning in case no key frames are being received (#1763)
- return error in case of string-to-int overflows (#1776)
- allow external authentication to return an error by using the HTTP body (#1756)
- mpeg4audio: fix crash when unmarshaling specially-crafted ADTS packets (bluenviron/mediacommon#4)
- mpeg4audio: fix number of channels of PS object types (https://github.com/bluenviron/5)
- build(deps): bump github.com/pion/webrtc/v3 from 3.1.59 to 3.1.62 (#1721)
- build(deps): bump golang.org/x/crypto from 0.8.0 to 0.9.0 (#1783)
WebRTC
- validate ICE servers in configuration (#1798)
- remove pion/ice replacement (#1803)
- discard empty RTP packets coming from Chrome (#1804)
- return 404 when a stream is not present (#1805)
RTSP
- Allow sending Range header to RTSP sources (#1780) by @Jordy84
- handle additional fields of MPEG4-generic: streamtype, mode, profile-level-id (bluenviron/gortsplib#250)
- fix parsing of MP4A-LATM formats with no channels and object (bluenviron/gortsplib#254) (#1716)
- infer object, sample rate, clock of MPEG4AudioLATM from config (bluenviron/gortsplib#255)
- support fragmented MPEG-2 audio frames (bluenviron/gortsplib#259)
- rtpmpeg2audio: improve decoder robustness (bluenviron/gortsplib#262)
- fix timeout with some cameras by decreasing interval between keepalives (bluenviron/gortsplib#265) (#1403)
- print number of lost packets even when using TCP (bluenviron/gortsplib#269)
- add 32-bit tests; return errors in case of string-to-int overflows (bluenviron/gortsplib#276)
- fix compatibility with Mercury cameras (bluenviron/gortsplib#271) (bluenviron/gortsplib#275)
- rtptime: fix time encoding on arm32 (bluenviron/gortsplib#274) (bluenviron/gortsplib#277)
- server: remove dashes from session ID (bluenviron/gortsplib#278)
HLS
- bump hls.js (#1807)
- show index page even if stream is not present (#1806)
- muxer: print error in case generation of init.mp4 fails (bluenviron/gohlslib#30)
- add 32-bit tests; return errors in case of string-to-int overflows (bluenviron/gohlslib#39)
- force some integers to be unsigned (bluenviron/gohlslib#40)
Raspberry Pi Camera
Metrics
- fix: metrics listener address sanitization (#1774) by @tnyeanderson
API
- fix type of RTMPS readers (#1784) . it was wrongly set to RTMP.