Skip to content

serjective/yugomedia

Yugomedia Logo

Yugomedia is an early-stage, in-development multimedia platform, with native demuxers for media containers, bindings for C libraries such as ffmpeg/librempeg, Apple's VideoToolbox, and more. It includes yugo-play: a relatively feature-filled media player.

Screenshot

yugo-play screenshot

Current Support

  • Native mp3, mp4, and mkv demuxing
  • Common video (H26x/VPx/AV1) and audio (MP3/AAC/Opus) decoding via ffmpeg/librempeg's libavcodec, Apple's AVFoundation/VideoToolbox/CoreMedia stack, and individual decoders like dav1d/libaom/libopus

Media Player (yugo-play)

  • Native macOS windowed playback with Metal presentation and CoreAudio output
  • Keyboard controls for play/pause, mute, seek, frame step, replay, loop, playback speed, diagnostics
  • OSD for playback actions and status
  • Downloading and streaming networked files
  • Integration with the yt-dlp project for social media links. Personally tested with YouTube and Instagram Reels.
  • "Basic" subtitle support
  • Speeding up and slowing down the video/audio. It does not support pitch correction yet. Honestly, I am not rushing to fix because it's too funny 😂😂😂

What else should we add to yugomedia? We want to hear from you! Feature requests welcome: file a Github issue.

Known Limitations

  • Mac OS only. Support for other OSes are incoming.
  • The Apple VideoToolbox backend is buggy. You should use the libav* backend to decode real-world videos.

Quick Start

INSTALL.md has more instructions on building a yugo-play that can play most of the common media formats.

License

Yugomedia itself is dual-licensed under MIT OR Apache-2.0.

Builds that include only Yugomedia and permissively licensed dependencies can remain under permissive license terms.

Some optional backends depend on libraries with stronger license requirements. For example, FFmpeg is commonly used under LGPL terms, while librempeg is GPL-licensed. If you build Yugomedia with one of these optional backends enabled, such as through the enable-lgpl or enable-gpl feature gates, the resulting binary must comply with the terms of that dependency’s license.

In practice:

  • A build without LGPL/GPL components remains MIT OR Apache-2.0, subject to the licenses of its included dependencies.
  • A build with the FFmpeg backend enabled under enable-lgpl must comply with LGPL requirements.
  • A build with the librempeg backend enabled under enable-gpl must comply with GPL requirements.

Releases

No releases published

Packages

 
 
 

Contributors