explaingit

nevcairiel/lavfilters

8,872C++Audience · developerComplexity · 3/5Setup · easy

TLDR

LAV Filters is a set of Windows media components that plug into DirectShow so media players like Media Player Classic can decode almost any video, audio, or container format including MKV and Blu-ray.

Mindmap

mindmap
  root((LAV Filters))
    What it does
      Decode video audio
      Split containers
      DirectShow plugin
    Three Components
      LAV Splitter
      LAV Video Decoder
      LAV Audio Decoder
    Supported Formats
      MKV AVI MP4
      Blu-ray
      Multi-language tracks
    Tech
      C++ codebase
      FFmpeg powered
      Visual Studio 2022
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Play MKV, AVI, MP4, and Blu-ray files in Media Player Classic or PotPlayer on Windows.

USE CASE 2

Automatically select the correct audio language and subtitle track from multi-language media files.

USE CASE 3

Open a Blu-ray disc folder with LAV Splitter and have it identify and play the main movie automatically.

USE CASE 4

Build a custom Windows media application on top of FFmpeg-powered DirectShow components.

Tech stack

C++FFmpegDirectShowVisual Studio

Getting it running

Difficulty · easy Time to first run · 5min

Run the registration script with administrator rights to install, building from source requires Visual Studio 2022 and the FFmpeg dependencies.

License information is not described in the explanation.

In plain English

LAV Filters is a set of Windows media components that let you play almost any video or audio format in media players that use the DirectShow framework. Windows programs like Media Player Classic, PotPlayer, and many others rely on DirectShow to handle media playback, and LAV Filters plugs into that system to decode files that Windows cannot play on its own. The project includes three main pieces. The LAV Splitter reads the container format of a media file (MKV, AVI, MP4, Blu-ray, and many others) and breaks it into separate audio, video, and subtitle streams. The LAV Video Decoder takes the compressed video stream and decodes it into raw frames the player can display. The LAV Audio Decoder does the same for audio tracks. All three are built on top of FFmpeg, the widely used open-source media library, which is why the tool can handle so many formats. Stream selection is a notable feature. When a file contains multiple audio tracks or subtitle tracks (for example, a movie with English and German audio and several subtitle languages), LAV Splitter can automatically pick the right ones based on preferences you configure. You can set a priority list of language codes for audio, and for subtitles you can write rules that pair audio language with subtitle language (for example, show German subtitles when English audio is playing). There are also flags for forced subtitles, hearing-impaired subtitles, and default tracks. For Blu-ray playback, you open the index.bdmv file and LAV Splitter automatically identifies the main movie and starts playing. To install, you unpack the files and run a registration script with administrator rights. The project is written in C++ and builds with Visual Studio 2022.

Copy-paste prompts

Prompt 1
How do I install LAV Filters on Windows and configure it to be used by Media Player Classic?
Prompt 2
Set up LAV Filters to automatically prefer English audio and show subtitles only when the audio is not in English.
Prompt 3
Write step-by-step instructions for opening a Blu-ray folder with LAV Splitter and starting the main movie.
Prompt 4
How do I build LAV Filters from source code using Visual Studio 2022?
Prompt 5
Configure LAV Splitter to prefer German audio with English subtitles as a fallback for all media files.
Open on GitHub → Explain another repo

← nevcairiel on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.