/mooncake

libav/libswscale binding for .NET Core

Primary LanguageC

AtomicAkarin.Mooncake

libav/libswscale-based RTSP client for .NET Core

This project is still under development, you may check out other branches for latest progress.

Modules

  • 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

Goals and Roadmap

  • 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

License

MIT