/RootEncoder-iOS

RootEncoder iOS (rtmp-rtsp-stream-client-swift) is a stream encoder to push video/audio to media servers using protocols RTMP, RTSP and SRT with all code written in Swift

Primary LanguageSwiftApache License 2.0Apache-2.0

RootEncoder iOS

RootEncoder iOS (rtmp-rtsp-stream-client-swift) is a stream encoder to push video/audio to media servers using protocols RTMP, RTSP and SRT with all code written in Swift

Status

The project is not stable yet. For now, the min iOS version required is iOS14 but I have plan to downgrade it a bit. Swift 5 is required because RTMP and RTSP protocol use async await in sockets.

Features

  • H264 and AAC support
  • Switch camera while streaming
  • RTSP TCP/UDP
  • RTSPS
  • RTSP auth (basic and digest)
  • RTMP auth (adobe and llnw)
  • RTMP
  • RTMPS
  • Real time filters (with Metal). For now, support only filters with CIImage but I have plan to add filters using vertex and fragment
  • Reconnection (RTMP and RTSP)
  • Stream from device display (DisplayRtsp/DisplayRtmp)
  • H265 support (RTSP and RTMP)
  • Get upload bandwidth used (RTMP and RTSP)
  • Local video record

Compile

SPM

In Xcode go to: Project > Package dependencies > + > add this to the search bar:

https://github.com/pedroSG94/RootEncoder-iOS

Use examples:

RTMP

https://github.com/pedroSG94/RootEncoder-iOS/blob/master/app/RtmpSwiftUIView.swift

RTSP

https://github.com/pedroSG94/RootEncoder-iOS/blob/master/app/RtspSwiftUIView.swift

Incoming features

I will develop this features but not in this order.

  • Stream from file (FromFileRtsp/FromFileRtmp)
  • Upload to cocoapod
  • Minors features: video bitrate on fly, adaptative bitrate.
  • SRT (maybe the last one)