Skip to content

What is YoYoVideo ​

YoYoVideo is a local video player written in Rust, drawn with Slint, and played back through libmpv.

It exists for one specific reason: when you want to watch several videos at once, most players will not do it. Single-file playback is table stakes. Dropping in a folder, playing every tile simultaneously, and giving each one its own pause, seek and volume — few players bother.

What it does ​

  • Multi-tile batch playback. Drag in several files and each tile becomes an independent session: its own transport, its own volume, and tile sizes you can drag to resize.
  • Full transport control. Exact time jumps, speed, zoom, rotation, picture panning, A-B loop, chapter jumps, and droppable markers on the timeline.
  • Subtitles and tracks. External subtitle files, adjustable subtitle delay, scale and vertical position, audio track switching and cycling channel modes.
  • Picture tools. Common video filter presets plus brightness, contrast and saturation.
  • A quiet frameless shell. The title bar and control bar are drawn by the app and fade out after a few idle seconds.
  • Local playback, no telemetry. Local media needs no network. Optional update checks contact GitHub, without uploading media or playback history.

What it is not ​

  • Not a transcoder. YoYoVideo plays; it does not edit or export.
  • Not a streaming client. It can open a network URL, but it is not a product with recommendations and accounts.
  • Platform validation varies. A package target is not proof of native playback or upgrades; see Installation.

How it is put together ​

CrateRole
crates/yoyo-corePlayback session and command logic, with no playback core dependency
crates/yoyo-mpvlibmpv adapter, translating core events into domain events
apps/yoyovideo-desktopSlint desktop app, platform integration, and the shipped binary

That split is deliberate. There is not a single line of libmpv code in yoyo-core, so the entire playback domain can be tested on a machine that has never heard of libmpv — which is exactly how the default cargo test works.

Released under the GPL-3.0-or-later License, with a GPL-2.0-or-later mpv / FFmpeg runtime.