libav/libswscale-based RTSP client for .NET Core
This project is still under development, you may check out other branches for latest progress.
- Lotus(Core/Shim): Handles libav/libswscale invocations and manages related structures
- Mooncake: Initializes FFmpegShim and/or hosts frame handler plugins
- Bakery: WebM chunks in-memory (planned) server
-
FrameReader: Open supported media files or urls (e.g rtsp://) via avformat
-
FrameReader: Receive and decode frames via avcodec
- FrameScaler: Convert frames into different pixel formats (e.g YUV420P to RGB24) via swscale
-
Dump AVFrame into SixLabors.ImageSharp.Image(feature not longer required) -
AVPacketStream: Encapulse AVPacket as System.IO.Stream (read-only)
Individual packets can be dumped out (e.g re-encode frames as JPEG and dump into .NET) as simple as
Stream.CopyTo()
.
- StreamIOContext: Encapsule System.IO.Stream (read-only) as AVIOContext
- StreamIOContext: Write support
FileStream and MemoryStream can be provided to AVFormat as input source or output destination, which enables in-memory re-muxing.
-
Re-encode and mux into VP9 WebM
-
Serve output WebM (cached in in-memory) chunks over HTTP
MIT