v0.23.0

bluenviron/mediamtxv0.23.0May 16, 2023by github-actions[bot]

AI Summary

A major feature release introducing WebRTC support for publishing and reading streams, enhanced RTMP capabilities with H265 and AV1, and API pagination.

Key Highlights

  • Full WHIP/WHEP support for publishing and reading streams
  • Support for H265 and AV1 tracks in Enhanced RTMP
  • API pagination added to all /list endpoints
  • Added darwin/arm64 binary support

Breaking Changes

  • API pagination added to /list endpoints

New Features

  • Support publishing streams with WebRTC
  • Support reading AV1 tracks with WebRTC
  • Support for MPEG-2 audio (MP3) tracks
  • Compatibility restored with OBS 29.1

Full Release Notes

## New features

General

* add darwin/arm64 binary (#1789) by @a-wing

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/publish` inside the browser or using the WHIP URL `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 URL `http://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 (https://github.com/bluenviron/mediacommon/issues/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 (https://github.com/bluenviron/gortsplib/issues/250)
* fix parsing of MP4A-LATM formats with no channels and object (https://github.com/bluenviron/gortsplib/issues/254) (https://github.com/aler9/mediamtx/issues/1716)
* infer object, sample rate, clock of MPEG4AudioLATM from config (https://github.com/bluenviron/gortsplib/issues/255)
* support fragmented MPEG-2 audio frames (https://github.com/bluenviron/gortsplib/issues/259)
* rtpmpeg2audio: improve decoder robustness (https://github.com/bluenviron/gortsplib/issues/262)
* fix timeout with some cameras by decreasing interval between keepalives (https://github.com/bluenviron/gortsplib/issues/265) (https://github.com/aler9/mediamtx/issues/1403)
* print number of lost packets even when using TCP (https://github.com/bluenviron/gortsplib/issues/269)
* add 32-bit tests; return errors in case of string-to-int overflows (https://github.com/bluenviron/gortsplib/issues/276)
* fix compatibility with Mercury cameras (https://github.com/bluenviron/gortsplib/issues/271) (https://github.com/bluenviron/gortsplib/issues/275)
* rtptime: fix time encoding on arm32 (https://github.com/bluenviron/gortsplib/issues/274) (https://github.com/bluenviron/gortsplib/issues/277)
* server: remove dashes from session ID (https://github.com/bluenviron/gortsplib/issues/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 (https://github.com/bluenviron/gohlslib/issues/30)
* add 32-bit tests; return errors in case of string-to-int overflows (https://github.com/bluenviron/gohlslib/issues/39)
* force some integers to be unsigned (https://github.com/bluenviron/gohlslib/issues/40)

Raspberry Pi Camera

* allow setting rpiCameraSaturation to 0 (#1651) (#1772)

Metrics

* fix: metrics listener address sanitization (#1774) by @tnyeanderson

API

* fix type of RTMPS readers (#1784) . it was wrongly set to RTMP.