v1.7.0

AlexxIT/go2rtcv1.7.0Sep 2, 2023by AlexxIT

AI Summary

Major architectural overhaul removing most external libraries and introducing a native HomeKit Server with transparent proxy capabilities.

Key Highlights

  • New HomeKit Server
  • Removal of external libraries (rewritten parsers)
  • Transparent proxy for HomeKit cameras

Breaking Changes

  • Storage migration: `go2rtc.json` removed, all changes now go to `go2rtc.yaml`

New Features

  • TP-Link Kasa cameras source
  • Custom timeout for RTSP source
  • Media filter for RTSP source
  • AAC consumer support
  • RTMPS source support
  • OpenIPC WebRTC format support
  • Go version updated to 1.21

Full Release Notes

**Dangerous update!** A lot of new stuff. Not everything can work well.

## Add HomeKit Server

- Add support output any H264 camera to Apple HomeKit
- Add support transparent proxy for HomeKit cameras (Aqara, etc.)

## Total rework

- Remove almost all external libraries (dependencies) except `pion/WebRTC` and rewrited that formats/parsers from scratch
- Total rework HomeKit source
  - including native AAC-ELD audio support for FFmpeg
- Total rework RTMP/RTMPS source
- Total rework HTTP-FLV source
- Total rework MPEG-TS source:
  - including rework TP-Link Tapo source
  - add support IPTV streams with B-frames and AAC audio
  - add support MPEG-TS for HLS source
- Rework RTSP server (consumer) for less CPU usage
- Rework JPEG source
- Rework MJPEG source
- Rework Magic (pipe/tcp/http) source
- Rework MP4, HLS, MPEG-TS, MJPEG consumers
- Rework HomeKit pairing WebUI
- Rework Discovery API for all sources
- Support for adding and removing streams in `go2rtc.yaml` with preserving file formatting
- Remove storage as `go2rtc.json` file, all changes now go to `go2rtc.yaml`

## Other with examples

- Add TP-Link Kasa cameras source #545
  ```yaml
  streams:
    # https://medium.com/@hu3vjeen/reverse-engineering-tp-link-kc100-bac4641bf1cd
    kasa: kasa://user:pass@192.168.1.123:19443/https/stream/mixed
  ```
- Add width, height, resize params for JPEG snapshots API #517 @skrashevich
  ```bash
  ffplay "http://192.168.1.123:1984/api/frame.jpeg?src=camera1&w=1280&h=720"
  ```
- Add support custom timeout for RTSP source
  ```yaml
  streams:
    camera1: rtsp://192.168.1.123/stream1#timeout=30
  ```
- Add custom headers for HTTP source
  ```yaml
  streams:
    http-mjpeg1: "https://mjpeg.sanford.io/count.mjpeg#header=Authorization: Bearer XXX"
  ```
- Add media filter for RTSP source #198
  ```yaml
  streams:
    camera-video: rtsp://192.168.1.123/stream1#media=video
    camera-audio: rtsp://192.168.1.123/stream1#media=audio
  ```
- Add AAC consumer
  ```bash
  ffplay "http://192.168.1.123:1984/api/stream.aac?src=camera1"
  ```

## Other

- Add support simple HLS/TS source
- Add support RTMPS source
- Add support **MJPEG** codec for **HomeKit** source
- Add support [OpenIPC](https://openipc.org/) WebRTC format as source
- Add **SDP** to `stream.json` info
- Add insecure HTTPS requests to IP addresses
- Add new H265 codec to **DVRIP** source #561 by @dbuezas
- Add check for empty H265 packet #589
- Add autobild binaries (artifacts) for master (dev) version
- Add support B-frames for MP4 consumer
- Add `ffplay` example to WebUI links page
- Support hass source without hass config #541
- Update FFmpeg preset for OPUS
- Update WebUI config editor #593 by @skrashevich
- Update Go version to 1.21 #592 by @skrashevich
- Update FFmpeg flags for hardware vaapi #557 by @h0nIg
- Update readme about wyze-bridge #588
- Improve mDNS handler
- Fix config file validating
- Fix support more TP-Link cameras RTSP #567 by @awatuna
- Fix H264 profile parsing for [OpenIPC](https://openipc.org/) RTSP source
- Fix 400 response on PLAY for Reolink Doorbell #562
- Fix redirect for rtspx source #565
- Fix WebUI background color for dark mode browser
- Fix H265 codec for bubble source